配置 Maven 触发器
Triggers 页面位于 Build Configuration Settings,您可以在此添加以下与 Maven 相关的触发器:
基于校验和的触发器
触发器检查依赖项的内容是否真的发生了变化,方法是通过验证其在存储库中的校验和与本地存储的版本进行对比。 在触发构建之前,TeamCity 试图通过下载与该构件关联的文件摘要(MD5 / SHA-1)来确定所需依赖项的校验和。
如果可以检索到校验和,并且与本地存储的校验和匹配,则不会触发构建。 如果校验和有所不同,就会触发构建。
如果无法从远程服务器检索校验和,依赖项将会被下载,TeamCity 将计算其校验和,并遵循上述的构建触发机制。
Maven Snapshot 依赖触发器
Maven 快照依赖触发器在远程仓库中的快照依赖内容发生实际修改时,会通过检测校验和变化将新的构建添加到队列中。
依赖项工件是根据 POM 和服务器端的 Maven Settings 进行解析的。
Maven Artifact 依赖触发器
Maven 工件依赖触发器在通过校验和变化检测到依赖内容真实修改时,将构建添加到队列中。
要添加触发器,请在 Add New Trigger 对话框中指定以下参数:
形参 | 描述 |
---|---|
组 ID | 指定所需 Maven 工件所属的组的标识符。 |
构件 ID | 指定工件的标识符。 |
版本或版本范围 | 指定工件的版本或版本范围。 版本范围语法在下面的 部分 中有所描述。 SNAPSHOT 版本也可以使用。 |
类型 | 明确定义指定工件的类型。 默认情况下,类型是 |
分类器 | (可选)指定工件的分类器。 |
Maven 仓库 URL | 指定到 Maven 仓库的 URL。 请注意,此参数是可选的。 如果未指定 URL,则:
|
如果当前正在运行的构建可以生成此工件,那么请不要触发构建 | 选择此选项将在生成此处使用的构件的构建完成后才触发构建。 |
高级选项
形参 | 描述 |
---|---|
仓库 ID | 允许使用有效的 Maven 设置中的授权 |
用户设置选择 | 允许选择有效的设置。 与 Maven runner 的 User Settings 相同。 |
TeamCity 通过以下方式确定用于检查工件更新和触发构建(如果检测到更改)的有效仓库: 实际的存储库。
如果已设置 URL 和 Repository ID,将从有效设置中选择认证(参见下文)
如果只设置了 URL,将保留旧的行为:使用临时仓库 ID (
_tc_temp_remote_repo
)如果未设置 URL(无论仓库 ID 如何),将根据有效设置在可用仓库中查找工件。
TeamCity 按照以下方式确定 有效设置:
在触发设置中,用户可以在默认、自定义或上传的 Maven 设置中进行选择。 参见 Maven 服务器端设置 以获取详细信息。
如果没有为触发器配置特定设置,将使用 Maven 构建步骤设置。
如果没有为触发器配置设置,并且没有 Maven 构建步骤,将使用
默认
服务器 Maven 设置。
版本范围
要指定版本范围,请使用以下语法,如 Maven 文档中所提议的。
请注意,Maven Artifact Dependency Trigger 不仅可以用于固定版本的 artifacts,而且也可以作为精细的替代方案用于快照,以替代 Maven Snapshots Dependency Trigger。
Range | 含义 |
---|---|
| x <= 1.0 |
| "对 1.0 的"软"要求(只是一个建议 - 如果它匹配所有范围则有助于选择正确的版本) |
| 对 1.0 的硬性要求 |
| 1.2 ≤ x ≤ 1.3 |
| 1.0 <= x < 2.0 |
| x >= 1.5 |
| x <= 1.0 或 x >= 1.2. 多个集合用逗号分隔 |
| 如果已知1.1与此库不能一起使用,则将其排除在外 |
1.0-SNAPSHOT | 触发器将检查最新快照版本的更新 |
触发构建自定义
触发器设置中的 Build Customization 标签允许配置由此触发器启动的构建的自定义参数。 与 Run Custom Build 对话框类似,它让您可以覆盖 构建参数 的值,并选择是否在构建前清理 检出目录。
在此选项卡中,您可以自定义当前构建配置中使用的任何参数的值。 或者,您可以添加一个新的参数,它将仅在由此触发器启动的构建中可用。 如果当前构建对其他构建有快照依赖,这样一个参数也可以用来覆盖依赖构建配置的某个属性:使用这个 reverse.dep.<dependencyBuildID>.<property>
语法。
请注意,如果您在触发器中重新定义了构建参数,然后在 参数 中删除了原始参数,那么它的重新定义值将被转换为触发器自己的纯文本参数。 在定制安全值时,这一点至关重要,因为只有与 "Password" 类型 一起存储时,它们才会被隐藏,如果转化为纯文本,它们将变得可读。
TeamCity 允许以多种方式解决类似的任务,在某些情况下,仍然优先创建不同的构建配置。 例如,如果在同一配置中有太多自定义运行,那么 TeamCity 预测每次构建的确切持续时间可能会更加困难。 如果您需要触发带有大量不同参数的构建,我们建议您创建一个 构建配置模板,并将其用作各种配置的蓝图,每种配置都有其自己的参数。