我有两个版本 -
Build Dev
和 Deploy Dev
。 Build Dev
正在检查包含 pom.xml
的 Maven 构建工具项目。因此,在这个构建中,我可以访问像 %maven.project.version%
这样的属性。这里的问题是 Deploy Dev
实际上也需要这些属性,但它们是两个不同的版本。
现在我读到了快照依赖关系,我可以将两个构建链接到一个构建链中,并且它们一起共享源快照。我什至启用了他们使用相同构建代理的功能。
我以为可能就是这样,但事实并非如此。构建代理仍然不兼容,并且永远不会触发
Deploy Build
。
可以访问依赖项构建的属性(在here中进行了解释)但是似乎仅适用于特定属性。我无法像这样访问
%dep.build_dev.maven.project.name%
任何人都可以解释我如何在这两个构建之间共享这些 Maven 属性吗?
你是对的,Maven 构建的评估属性不能用作下游依赖项的参数。当阅读此错误单时,TeamCity 似乎以不同的方式处理来自 Maven 的这些“结果”参数。
但是您可以通过永久存储此瞬态参数来规避此问题!
MAVEN_PROJECT_VERSION_EVALUATED
,以便下游依赖项可以引用它。使用空值或任意值定义它 - 它将被您的构建步骤覆盖。%maven.project.version%
存储在您刚刚定义的参数中:echo "##teamcity[setParameter name='MAVEN_PROJECT_VERSION_EVALUATED' value='%maven.project.version%']"
%dep.<other build ID>.MAVEN_PROJECT_VERSION_EVALUATED%