Maven doesn't interpret all properties in some child poms
We are working on quite big project with many modules and we use maven 2.2.1 to build it. We have declared some properties in master pom.xml for having dependency version in one place.
This is how this part of our pom.xml looks like: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: caoas</name>
<modules>
<module>common</module>
<module>services</module>
<module>datamanagement</module>
</modules>
<properties>
<jslee.version>1.1</jslee.version>
<rhino.version>2.1</rhino.version>
<diameterro.ra.version>2.2.0.1</diameterro.ra.version>
<cdr.ra.version>2.1.1.0</cdr.ra.version>
<cgin.ra.version>1.3.2</cgin.ra.version>
<cgin.oc-common.version>1.3.0</cgin.oc-common.version>
<cgin.in-datatypes.version>5.1.3.2</cgin.in-datatypes.version>
<ra.tracelevel>Finest</ra.tracelevel>
</properties>
...
</project>
We use those properties in few modules and in most of them they are interpreted correctly but there is an issue with one in which only some are interpreted and some are not.
Here's part of that pom.xml:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.as.services</groupId>
<artifactId>moc-sbb</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: services :: MOC-SBB</name>
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
</parent>
<dependencies>
<dependency>
<groupId>opencloud</groupId>
<artifactId>diameter-ro-ra-type</artifactId>
<version>${diameterro.ra.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>oc-common</artifactId>
<version>${cgin.oc-common.version}</version>
<开发者_开发百科;scope>provided</scope>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>in-datatypes</artifactId>
<version>${cgin.in-datatypes.version}</version>
<scope>provided</scope>
</dependency>
...
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.ratype</artifactId>
<version>${cgin.ra.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.blah.as</groupId>
<artifactId>correlation-ra-ratype</artifactId>
<version>1.0</version>
<type>jainslee-ratype-jar</type>
</dependency>
</project>
All properties starting with 'cgin' are not interpreted in this pom.xml (the work fine in other modules) other properties are fine.
The whole build has worked perfectly, but recently we had to change modules version, so change affected current module version, parent module version and some dependencies version but those were only local dependencies with version written explicitly.
Have anyone cone across such problem or have any idea where to search for reason fir such situation?
br
Lucjaedit1
I have used mvn -X -U clean install to look more into the build and have found no significant error, the only thig I have found is that in some modules there is expression "properties used" and in some it's not present, the problematic module also doesn't have it. I don't know how it would affect this module, because only some properties are not read and some are.[DEBUG] properties used {... cgin.oc-common.version=1.3.0, ... cgin.ra.version=1.3.2, ... cdr.ra.version=2.1.1.0, ... diameterro.ra.version=2.2.0.1, ... cgin.in-datatypes.version=5.1.3.2, ...}
edit2
Here's the whole pom.xml for module 'moc' <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services :: MOC</name>
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>services</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>moc-sbb</module>
<module>moc-du</module>
</modules>
</project>
and for module services
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.as.services</groupId>
<artifactId>services</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.0</version>
</parent>
<modules>
<module>moc</module>
<module>ussd</module>
</modules>
</project>
module structure in this case looks like this:
caoas (root) | services | moc | moc-sbbHere's example for another module in which properties work fine (structure shown from root to leaf node)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.as.common</groupId>
<artifactId>common</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>lib</module>
<module>ra</module>
<module>utils</module>
<module>patches</module>
</modules>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.as.common</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: libs</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>common</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>base</module>
<module>tracing</module>
<module>commons</module>
<module>diameter-ro-ext</module>
<module>location-retrieval</module>
<module>normalization</module>
<module>ticketing</module>
<module>profiles</module>
<module>notifications</module>
<module>screening</module>
<module>soap-tools</module>
<module>fsm</module>
<module>xmlbeans</module>
<module>sccp-address-selection</module>
</modules>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: Location Retrieval</name>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.1</version>
</parent>
<modules>
<module>location-retrieval-profiles-api</module>
<module>location-retrieval-intf-lib</module>
<module>location-retrieval-sbb-jar</module>
<module>location-retrieval-du</module>
</modules>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval</artifactId>
<version>1.0.1</version>
</parent>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-sbb-jar</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: Common :: Location Retrieval SBB</name>
<dependencies>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>base-api</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-intf-lib</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-profiles-api</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>oc-common</artifactId>
<version>${cgin.oc-common.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>in-datatypes</artifactId>
<version>${cgin.in-datatypes.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common.ratype</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common.events</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>cgin-common</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.api</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.events</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>opencloud</groupId>
<artifactId>map_rel4.ratype</artifactId>
<version>${cgin.ra.version}</version>
</dependency>
<dependency>
<groupId>com.blah.as.common</groupId>
<artifactId>base-tracing-intf</artifactId>
<version>1.0.1</version>
<type>jar</type>
</dependency>
</dependencies>
It uses the same properties and here they work fine.
Your services pom refers to com.blah.as.common:caoas:1.0.0 as its parent. In your post, you showed us version 1.0.1, not 1.0.0. Perhaps the property doesn't exist in version 1.0.0?
I always determine dependencies versions in root pom. And not determine versions in child projects. Child projects get dependency versions from parent pom by default.
E. g.
Parent pom:
...
<groupId>ba.server</groupId>
<artifactId>ba-server</artifactId>
<packaging>pom</packaging>
<name>ba-server</name>
<version>0.16.22-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
<version>2.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>proxool</groupId>
<artifactId>proxool </artifactId>
<version>0.8.3</version>
</dependency>
...
Child pom:
...
<parent>
<groupId>ba.server</groupId>
<artifactId>ba-serer</artifactId>
<version>0.16.22-SNAPSHOT</version>
</parent>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>ba-server-kernel</artifactId>
<name>ba-server-kernel</name>
<dependencies>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
</dependency>
...
It looks that your child module refers to a wrong parent POM. In your parent POM you have declared the artifactId as 'caoas':
<artifactId>caoas</artifactId>
But in your child POM you refer to another parent, with artifactId 'moc':
<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
</parent>
精彩评论