对不起,我是Java的新手,我想知道如何避免测试我的依赖项项目。
我有一个Proj3,它具有两个依赖项Proj1和Proj2(以及其他)。
如果我执行 mvn全新安装,不仅要执行当前Proj3的测试,还要执行依赖项Proj1和Proj2的测试。
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.proj.environment.tests.api</groupId>
<artifactId>environment_Api_Tests</artifactId>
<version>437r21</version>
<packaging>pom</packaging>
<properties>
<cucumber.version>4.3.1</cucumber.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.version>437r21</project.version>
</properties>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.proj.environment</groupId>
<artifactId>Proj1</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.proj.environment</groupId>
<artifactId>Proj2</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<exclude>**/*Test.java</exclude>
</includes>
</configuration>
</plugin>
</plugins>
</build>
<modules>
<module>../Proj1</module>
<module>../Proj2</module>
</modules>
非常感谢,
答案 0 :(得分:0)
您显示的POM是针对aggregation (parent) project的environment_Api_Tests
项目。那是
...如果对父项目调用了Maven命令,则该Maven命令也将对父模块执行。
因此,不清楚您的案子到底是什么。
根据与您提到的Proj3
有什么关系,有不同的答案:
environment_Api_Tests
项目(您发布的POM)就是您所说的Proj3
对模块执行命令是完全正常的(不要将其与依赖项混淆),并且从模块中排除测试确实没有意义。而且,您不能在聚合(父)项目本身中进行测试。因此,如果您只想执行某些模块,那么最好引入仅包含那些模块的另一个聚合项目。您可以进一步聚合聚合项目。
此处的<dependencies>
与之无关。该部分在聚合项目中唯一要做的就是为所有<modules>
提供依赖项。就您而言,这意味着:
Proj1
取决于Proj1
和Proj2
。Proj2
取决于Proj1
和Proj2
。这可能不是您想要的!
Proj3
也是environment_Api_Tests
中的模块然后,您只需要对该项目执行测试,而不是environment_Api_Tests
。即使Proj3
依赖于Proj1
和Proj2
,他们的测试也不会执行
Proj3
是environment_Api_Tests
,但这并不意味着它是一个聚合项目然后,您需要将包装从pom
更改为jar
(或任何目标),并移除<modules>
,但保留{{1 }}。这样,项目可以拥有自己的测试,而不会执行依赖项的测试。
要记住的一件事是测试依赖性在多模块项目中如何工作。如果一个模块中的测试依赖于另一模块中的测试,则必须create a jar containing test classes。