我确切地找到了它应该如何工作,即通过在另一个用作依赖项的模块中生成一个测试 JAR ,这是一种工件,在我们的示例中是持久性模块:
<build>
<plugins>
<!-- Generate test jar too -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后通过将此测试 jar 声明为另一个模块的测试范围依赖项,在我们的示例中为services
模块:
<!-- Services module -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>services</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>services</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
请注意第二个依赖项与第一个依赖项相同,除了type
设置为test-jar
和scope
设置为测试。
现在,您可以想象在模块中编写的测试service
可以访问模块的测试类persistence
(这可行),还可以访问持久性模块的测试范围依赖项。
但是,这是一个已知问题 ( https://issues.apache.org/jira/browse/MNG-1378 ),它不能以这种方式工作。它自 2005 年以来一直开放,所以我认为它不会在不久的将来修复……但谁知道呢。
我只需要复制两个模块上的测试范围依赖项,或者只是在父 pom 中定义它们...