我在使用maven进行清理时遇到了一个奇怪的问题。我使用的集成配置文件如下。mvn clean install-Pinintegration,主模块-U-DskipTests=true
这将构建具有配置文件集成的主模块。主模块使用sco作为其依赖项。上海合作组织在表述中主要采用了发展、分布和一体化三种模式。每个都添加了带有工件id ws的依赖项,但每个都有不同的版本。由于我使用概要文件集成来运行maven,所以它应该在理想情况下使用集成中提到的版本来获取工件。但奇怪的是,它选择了开发版本。我不知道它是怎么做到的。如何确保加载具有正确配置文件的版本?
我添加了一些POM片段如下
<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>
谢谢你的帮助。
您正试图从根模块更改依赖项的配置文件。
一个有效的、更好的解决方案是将配置文件移动到具有正确ws版本的dependencyManagement部分的smc模块,并将对没有版本的ws的依赖项放在sco模块中。
将此添加到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