我正在开发一个多模块构建,当我为构建运行集成测试时,需要构建中另一个模块生成的工件之一作为依赖项。我正在使用'提供'范围,因此它不包含在为我们正在构建的模块生成的工件中,但为了确保它已编译,所以我们可以为我们的测试选择它。但是,我们列为依赖项的组件有自己的一组集成测试,它运行。我希望能够在依赖关系的定义中指定Maven在解析依赖关系时应该使用的配置文件(例如,包,而不是验证)。有没有办法在依赖关系的定义中指定我们想要解决依赖关系的Maven阶段/配置文件?
目前的设置:
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<scope>provided</scope>
</dependency>
所需的设置:
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<scope>provided</scope>
<!-- only go up until package phase for dependency artifact -->
<phase>package</phase>
<!-- use dependency's skip-tests profile to compile it -->
<profile>skip-tests</profile>
</dependency>
答案 0 :(得分:3)
假设B是依赖项,A是要使用完整测试构建的项目,C是A和B的父项。
A取决于B,它在pom中:
<dependency>
<groupId>BgroupId</groupId>
<artifactId>BartifactId</artifactId>
<version>Bversion</version>
<scope>provided</scope>
</dependency>
B具有无测试配置文件,默认情况下不活动。它在pom的末尾定义:
<profiles>
<profile>
<id>no-test</id>
<active>false</active>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
然后,您可以使用无测试配置文件构建C.您必须在C项目的根目录下执行以下命令:
mvn clean install -Pno-test
因此,C将首先使用无测试配置文件构建B(因为A需要B)。所以B将使用“跳过测试”属性构建。
然后C将构建A.由于没有在“无测试”配置文件的项目的pom中定义特定行为,因此将使用完整测试构建A。