我使用maven ci friendly样式从属性设置pom版本。在我详细了解发生了什么之前,让我告诉你我的pom和项目是如何构建的。
项目结构
base-project-pom
|_ reactor-parent
|_ service
|_ service-tests
base-project-pom 有一个名为maven-enforcer-plugin的插件,它在验证阶段执行。
在reactor-parent pom(pom包装)中,我使用以下代码设置版本 -
<groupid>...</groupid>
<artifactid>...</artifactid>
<version>${revision}</version>
<properties>
<revision>0.0.1-SNAPSHOT</revision>
</properties>
我在两个叶子项目中使用相同的${revision}
标记,即服务和服务测试。
问题是maven-enforcer插件无法确定${revision}
标记。
这是错误消息(丢弃机密部分,如网址) -
Failure to find ....service:reactor-parent:pom:${revision} in http://... was cached in the local repository
com.example.service:reactor-parent:pom:${revision}
为了摆脱这个问题,我尝试了不同的解决方案 -
1。使用maven-flatten插件 -
我已尝试使用此插件来压扁pom。它没有用。在我看来,问题可能与执行这两个插件(展平和执行器)的阶段有关。
2。在不同阶段执行执法者
在流程资源阶段执行展平,而在验证阶段执行执行程序。我在验证阶段和安装阶段尝试执行执行程序。它没有用。
第3。叶子项目中的版本属性标记。
我已尝试在leaf项目中为修订设置属性标记。这也没有奏效。
任何指针或方向都表示赞赏。
更新(2018年5月29日) - 截至今天,我发现这是maven-enforcer插件中的已知错误。