配置 Maven 触发器
Triggers 页面位于 Build Configuration Settings,您可以在此添加以下与 Maven 相关的触发器:
触发器检查依赖项的内容是否真的发生了变化,方法是通过验证其在存储库中的校验和与本地存储的版本进行对比。 在触发构建之前,TeamCity 试图通过下载与该构件关联的文件摘要(MD5 / SHA-1)来确定所需依赖项的校验和。
如果可以检索到校验和,并且与本地存储的校验和匹配,则不会触发构建。 如果校验和有所不同,就会触发构建。
如果无法从远程服务器检索校验和,依赖项将会被下载,TeamCity 将计算其校验和,并遵循上述的构建触发机制。
Maven 快照依赖触发器在远程仓库中的快照依赖内容发生实际修改时,会通过检测校验和变化将新的构建添加到队列中。
依赖项工件是根据 POM 和服务器端的 Maven Settings 进行解析的。
note
请注意,由于 Maven 在构建过程中将工件顺序部署到远程仓库,所以在 snapshot 依赖触发器检测到第一个更新的工件时,可能并非所有工件都是最新的。 为避免不一致,添加此触发器时,请选择如果当前运行的构建能生成快照依赖,不触发构建复选框,以确保在生成快照依赖的构建仍在运行时,构建不会启动。
note
同时使用快照依赖和依赖触发器进行构建 假设构建 A 既通过快照依赖又通过触发器依赖依赖于构建 B。 然后,在构建 B 完成后,只有在构建 B 不是包含 A 的构建链的一部分时,构建 A 才会被添加到队列中。
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>
语法。
tip
如果您将此功能与 build step execution conditions 结合使用,效果会更好。 您只需向步骤添加一个基于参数的条件,然后配置两个触发器:一个将运行包含此步骤的构建(条件满足时),另一个则会运行不包含此步骤的构建。 一种常见的用例是在常规构建中运行有限的测试,但在夜间构建中,当服务器负载最低时,运行完整的测试集。
请注意,如果您在触发器中重新定义了构建参数,然后在 参数 中删除了原始参数,那么它的重新定义值将被转换为触发器自己的纯文本参数。 在定制安全值时,这一点至关重要,因为只有与 "Password" 类型 一起存储时,它们才会被隐藏,如果转化为纯文本,它们将变得可读。
TeamCity 允许以多种方式解决类似的任务,在某些情况下,仍然优先创建不同的构建配置。 例如,如果在同一配置中有太多自定义运行,那么 TeamCity 预测每次构建的确切持续时间可能会更加困难。 如果您需要触发带有大量不同参数的构建,我们建议您创建一个 构建配置模板,并将其用作各种配置的蓝图,每种配置都有其自己的参数。
感谢您的反馈!