Reputation: 12748
I have a multi module project. I have introduced a property app.version
which I use instead of version everywhere in the pom.xml: in version tag and in dependencies in modules part.
I use maven 3.1.1 in Hudson environment.
After substituting written values (1.6.0-SNAPSHOT) with ${app.version}
, the build order that really goes through without error, is gone.
What caused the issue?
I got these kind of warnings in the begin, may it affect?
[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
I would need to parse too much the pom.xml:s, so the hierarchy is like follows, I give it:
main_pom
|
--- modules
| |
| --- all other modules
--- test |
module A
| |
| module B
module C
I give for hudson to start from main_pom. It handles main_pom as last. Why? It starts now from random one in all other modules part, builds the others, then modules, test and main_pom. Why this insane order?
The fail is in module A. It builds that first and not module B.
Correct order would be to start from main_pom -> module B -> module A etc but it starts directly from module A.
Edit:
My pom.xmls have the following structure:
<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>
Upvotes: 0
Views: 4046
Reputation: 12748
I used the following, and things started to flow:
main_pom:
<version>${app.version}</version>
all others:
<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>
Use of project.version
instead of app.version
property on dependencies made the trick.
Upvotes: 0