我有一个多模块项目。我引入了一个属性app.version
,我在 pom.xml 中使用它来代替版本:在版本标记和模块部分的依赖项中。
我在Hudson环境中使用maven 3.1.1。
用${app.version}
替换写入值(1.6.0-SNAPSHOT)后,真正没有错误的构建顺序就消失了。
是什么导致了这个问题?
我一开始就收到此类警告,会影响吗?
[WARNING] Some problems were encountered while building the effective model for com.mycompany.project:project-module:jar:2.4.0
[WARNING] 'version' contains an expression but should be a constant. @ com.mycompany.project:project-module:${app.version}, /var/lib/hudson/jobs/myJob TRUNK Maven/workspace/project-module/pom.xml, line 20, column 11
我需要解析太多的 pom.xml:s,所以层次结构如下,我给出:
main_pom
|
--- modules
| |
| --- all other modules
--- test |
module A
| |
| module B
module C
我让 hudson 从 main_pom 开始。它最后处理 main_pom。为什么? 现在,它从所有其他模块部分中的随机一个开始,构建其他模块,然后是模块、测试和 main_pom。为什么这个疯狂的命令?
失败发生在模块 A 中。它首先构建模块 A,而不是模块 B。
正确的顺序是从 main_pom -> 模块 B -> 模块 A 等开始,但它直接从模块 A 开始。
编辑:
我的 pom.xml 具有以下结构:
<parent>
<groupId>com.mycompany.project</groupId>
<artifactId>modules or parent_pom</artifactId>
<version>${app.version}</version>
<relativePath>../modules or parent_pom</relativePath>
</parent>
<dependency>
<groupId>com.mycompany.project</groupId>
<artifactId>some other module</artifactId>
<version>${app.version}</version>
</dependency>
最佳答案
Maven 3.2.1 或更高版本是 required在主程序中干净地使用变量 <version>
pom 文件的坐标。
关于java - 如何使 Maven 构建从常量中获取版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907845/