我有一个多模块项目。我已经介绍了一个属性app.version
,我在pom.xml中的所有地方使用而不是版本:在version标签和模块部分的依赖项中。
我在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
我让哈德森从main_pom开始。它最后处理main_pom。为什么? 它现在从所有其他模块部分中的随机部分开始,构建其他部分,然后是模块,test和main_pom。为什么这个疯狂的命令?
失败在模块A中。它首先构建,而不是模块B.
正确的顺序是从main_pom开始 - >模块B - >模块A等,但它直接从模块A开始。
修改
我的pom.xmls具有以下结构:
<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>
答案 0 :(得分:1)
Maven 3.2.1或更高版本required可以在pom文件的主<version>
corrdinate中干净地使用变量。
答案 1 :(得分:0)
我使用了以下内容,事情开始流动:
main_pom:
<version>${app.version}</version>
所有其他人:
<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>${project.version}</version> <---- here was before ${app.version}
</dependency>
在依赖项上使用project.version
而不是app.version
属性就成了伎俩。