使用maven进行清洁时,我遇到了一个奇怪的问题。我正在使用集成配置文件如下。 mvn clean install -Pintegration,mainmodule -U -DskipTests = true
这将构建具有配置文件集成的mainmodule。 mainmodule使用sco作为依赖。 SCO在repsository中使用3个配置文件,主要是开发,分发和集成。每个都有依赖项添加了工件ID ws,但每个都有不同的版本。当我使用配置文件集成运行maven时,理想情况下应该使用集成中提到的版本来获取工件。 但奇怪的是它拿起了开发版本。 我不确定它是怎么做到的。如何确保加载具有正确配置文件的版本?
<groupId>a.b.c.d</groupId>
<artifactId>smc</artifactId>
<version>1.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<artifactId>dummy</artifactId>
<groupId>a.b</groupId>
<version>2-SNAPSHOT</version>
</parent>
<name>smc</name>
.
.
.
<profile>
<id>mainmodule</id>
<modules>
<module>../mainmodule</module>
</modules>
<parent>
<groupId>a.b.c.d</groupId>
<artifactId>smc</artifactId>
<version>1.0.1-SNAPSHOT</version>
<relativePath>../smc/pom.xml</relativePath>
</parent>
<artifactId>mainmodule</artifactId>
<packaging>war</packaging>
<name>mainmodule</name>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>sco</artifactId>
<version>3.0.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
--------------------------------------------
<parent>
<groupId>a.b.c.d</groupId>
<artifactId>smc</artifactId>
<version>1.0.1-SNAPSHOT</version>
<relativePath>../smc/pom.xml</relativePath>
</parent>
<artifactId>sco</artifactId>
<version>3.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sco</name>
....
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<id>development</id>
<dependencies>
<dependency>
<groupId>a.b.spp</groupId>
<artifactId>ws</artifactId>
<version>2.1.1-SNAPSHOT</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>distribution</id>
<dependencies>
<dependency>
<groupId>a.b.spp</groupId>
<artifactId>ws</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>integration</id>
<dependencies>
<dependency>
<groupId>a.b.spp</groupId>
<artifactId>ws</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</profile>
</profiles>
感谢您的帮助。
答案 0 :(得分:0)
您正尝试从根模块更改依赖关系的配置文件。
一个更好的解决方案是将配置文件移动到具有正确ws版本的dependencyManagement部分的smc模块,并将依赖项放在sco模块中没有版本的ws中。
将此添加到smc
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<id>development</id>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>a.b.spp</groupId>
<artifactId>ws</artifactId>
<version>2.1.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
</profile>
<profile>
<id>distribution</id>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>a.b.spp</groupId>
<artifactId>ws</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</profile>
...
</profiles>
现在把依赖放在sco中。 (没有配置文件)
<dependencies>
<dependency>
<groupId>a.b.spp</groupId>
<artifactId>ws</artifactId>
</dependency>
</dependencies>
现在在smc上运行以下命令并查看正常工作的版本
mvn dependency:tree
mvn dependency:tree -Pdistribution