我们正在开发包含许多模块的大型项目,我们使用maven 2.2.1来构建它。 我们在master pom.xml中声明了一些属性,以便在一个地方拥有依赖版本 这就是我们的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.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>
我们在少数模块中使用这些属性,并且在大多数模块中它们被正确解释但是存在一个问题,其中只有一些被解释而有些则没有。
这是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>
所有以'cgin'开头的属性都未在此pom.xml中解释(其他模块中的工作正常)其他属性也没问题。
整个构建工作完美,但最近我们不得不更改模块版本,因此更改受影响的当前模块版本,父模块版本和一些依赖项版本,但这些只是本地依赖项,版本明确写入。
有没有人跨过这样的问题或者有任何想法在哪里寻找原因冷杉这样的情况?
BR
Lucja
EDIT1
我已经使用mvn -X -U clean install来查看构建并发现没有重大错误,我发现的唯一的一点就是在某些模块中有表达“使用的属性”而在某些模块中它不存在,有问题模块也没有它。我不知道它会如何影响这个模块,因为只有一些属性不被读取而有些属性被读取。
[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
这是模块'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>
和模块服务
<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>
在这种情况下,模块结构如下所示:
caoas(root)
|
服务
|
MOC
|
moc-sbb
这是另一个模块的示例,其中属性工作正常(从根节点到叶节点显示的结构)
<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>
它使用相同的属性,在这里它们可以正常工作。
答案 0 :(得分:0)
我总是在root pom中确定依赖项版本。而不是确定子项目中的版本。子项目默认从父pom获得依赖版本。
电子。克。
家长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>
...
儿童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>
...
答案 1 :(得分:0)
看起来您的子模块引用了错误的父POM。在您的父POM中,您已将artifactId声明为“caoas”:
<artifactId>caoas</artifactId>
但在您的孩子POM中,您使用artifactId'moc':
引用另一个父母<parent>
<groupId>com.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
</parent>
答案 2 :(得分:0)
您的服务pom是指com.blah.as.common:caoas:1.0.0作为其父级。在您的帖子中,您向我们展示了版本1.0.1,而不是1.0.0。也许版本1.0.0中不存在该属性?