第 9 章 创建项目的Builder

Builder根据项目特定的构建计划执行相应的创建活动。

新建Builder的步骤:首先点击"Builders",然后点击该页右上角的"New"图标 然后就会进入Builders编辑页面。

Builders编辑页

首先选择适当的Builder类型。 目前可以选择的Builder包括:

Ant Builder
Command Builder
Maven Builder

对于指定的项目,根据不同任务的需要,可以创建所需的builders,创建的数目没有限制,这个根据需求而定。 然后针对项目的每个构建计划,从这里定义的一套builder里面挑选出相应的builder或者post-builder。

9.1. 配置Ant Builder

Name(名称)

提供一个用于标识该builder的名称,该名称以后可以修改。

Command to run Ant(运行Ant的命令)

指定运行Ant的命令(通常是ant.bat或者ant的shell文件及其所在的目录) 例如:/path/to/ant 包含在${...}里面的字符串被当作是OGNL表达式,而且在构建前被替换成实际值。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

注意

包含空格的单个参数应该用引号括起来,这样才不会被解释为多个参数。

注意

对于Ant命令行选项,下面的选项不需要指定 "-buildfile" 和 "-logfile", 因为这两个选项由Luntbuild内部提供。其他选项允许使用。

您可以修改Ant命令以添加命令行选项和属性,例如-Ddebug=_debug.

Build script path(构建脚本所在路径)

Ant的构建脚本文件(buildfile)所在的路径,如果该目录非绝对路径,Luntbuild认为该目录是相对项目工作目录的。

Build targets(构建目标)

指定需要构建的目标,使用空格来分隔不同的目标(包括空格符的目标名需要用引号括起来,这样是为了避免被当成是多个目标来处理)。 如果没有指定目标,那么将使用ant构建文件的默认目标。 同样地,您可以使用OGNL表达式(${...})来传递变量,该变量作为构建的目标名。 例如,您可以使用${build.schedule.name}变量,该变量的作用是可以根据不同的构建计划使用不同的构建目标。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

Build properties(构建属性)

在此定义需要传递给ant构建脚本的属性,例如:

buildVersion=${build.version}
scheduleName=${build.schedule.name}

每一行只能设置一个变量。这里支持使用OGNL表达式格式,即${...}。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

环境变量

设置运行builder的环境变量,例如:

MYAPP_HOME=${build.schedule.workingDir}
SCHEDULE_NAME=${build.schedule.name}

每一行只能设置一个变量。可以在变量里插入OGNL表达式(即${...})。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

Build success condition(成功构建条件式)

构建成功条件式是一个用来判断当前项目是否成功构建的OGNL表达式 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。 如果不设置该属性,那么会使用默认值————result==0 and logContainsLine("BUILD SUCCESSFUL")。 当这个表达式的值为true的时候,就认为本次构建是成功的。 下面的一些例子演示了OGNL表达式的格式。

result==0, 此处的"result"表示ant构建结果的返回值。
logContainsLine("^ERROR.*"), 如果构建的日志里面的某一行匹配正则表达式"^ERROR.*",那么就认为该表达式为true。 关于正则表达式的格式请参考 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
以上的表达式可以使用'!'符号,该符号的作用是用来求相反的值。 例如,!logContainsLine("^ERROR.*"),如果构建日志里没有包括匹配指定模式的行,那么该表达式的值为true。
以上的表达式可以通过"and"和"or"逻辑运算符组合成新的表达式。 例如,表达式result==0 and !logContainsLine("^ERROR.*"),如果ANT执行构建的结果为0,且构建的日志不 包括以"ERROR"字符串打头的行,那么该表达式的值为true。

9.2. 配置命令行Builder

Name(名称)

builder的标识名,设置后可以修改。

Build command(构建命令)

在此指定构建命令。例如:/path/to/command.bat "${build.version}" "${build.artifactsDir}"。 ${...}所包括的部分被当作是OGNL表达式来处理,在构建前会被实际值代替。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

注意

包含了空格的参数需要用引号括起来,否则会被当作是多个参数来处理.

Run command in directory(运行构建命令的目录)

用于运行构建命令的目录。如果该目录非绝对路径,Luntbuild认为该目录是相对项目工作目录的。

Environment variables(环境变量)

在构建前需要先设置环境变量,例如:

MYAPP_HOME=${build.schedule.workingDir}

SCHEDULE_NAME=${build.schedule.name}

每行只能指定一个环境变量。OGNL表达式可以嵌入在变量的值里面,OGNL表达式需要用${...}括起来。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

Build success condition(成功构建表达式)

构建成功条件式是一个用来判断当前项目是否成功构建的OGNL表达式 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。 如果不设置该属性,那么会使用默认值————result==0 and logContainsLine("BUILD SUCCESSFUL")。 当这个表达式的值为true的时候,就认为本次构建是成功的。

9.3. 配置Maven Builder

Name(名字)

提供一个用于标识该builder的名称,该名称以后可以修改。

Command to run Maven(运行Maven的命令)

指定运行Maven的命令(一般来说是maven.bat,或者maven的shell脚本)。 例如:/path/to/maven。 ${...}中间的部分是OGNL表达式,在命令执行前会计算出该表达式的值。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

注意

如果要在Maven中引用Luntbuild提供的构建版本号,请参考下面的project.xml:
        
		<project>
		...
		<!--Use value of variable "buildVersion" as current version, this variable is defined in Luntbuild's Maven
		builder configuration page-->
		<currentVersion>${buildVersion}</currentVersion>
		...
		</project>
        
			

注意

包含了空格的参数需要用引号括起来,否则会被当作是多个参数来处理.

Directory to run Maven in (运行Maven的目录)

指定要在哪个目录下运行Maven。如果该目录非绝对路径,Luntbuild认为该目录是相对项目工作目录的。

Goals to build(构建的目标)

指定要构建的目标。如果要指定多个目标,请用空格来分开多个目标(带空格的目标应该使用引号括起来,否则会被当作是多个目标来处理。) 在目标名字里面可以使用${...},${...}中间的部分会被当作是OGNL表达式来处理。 例如,您可以使用${build.schedule.name},该表达式可以根据不同的目标使用不同的构建计划。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

Build properties(构建的属性)

定义传递给maven构建脚本的属性值。例如:

buildVersion=${build.version}
scheduleName=${build.schedule.name}

每一行只能设置一个变量。也可以在变量中使用OGNL表达式,OGNL表达式需要用${...}括起来。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

Environment variables(环境变量)

在这里设置构建的时候要使用的环境变量。例如:

MYAPP_HOME=${build.schedule.workingDir}

SCHEDULE_NAME=${build.schedule.name}

每一行只能设置一个变量。也可以在变量中使用OGNL表达式,OGNL表达式需要用${...}括起来。 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。

Build success condition(成功构建表达式)

构建成功条件式是一个用来判断当前项目是否成功构建的OGNL表达式 每个OGNL表达式都需要有一个对应的JAVA根对象来对表达式求值(通过反射机制),这里的根对象就是当前的Builder对象。 如果不设置该属性,那么会使用默认值————result==0 和 logContainsLine("BUILD SUCCESSFUL")。 当这个表达式的值为true的时候,就认为本次构建是成功的。