我在maven中创建了一个可以通过实现某些接口来扩展的库。为了测试默认实现,我编写了一些目前存在于src/test/java
中的hamcrest匹配器。
但是,我认为如果他们想要测试他们的自定义,他们可能对图书馆的用户有用。
那我怎么能让他们可用?将它们移动到src/main
需要使hamcrest成为运行时依赖项,我不希望这样。
答案 0 :(得分:4)
有一种方法可以使用命令'mvn jar:test-jar'创建测试jar并将其安装到存储库中。然后,可以使用依赖块中的test-jar修饰符为其他项目引用此jar。
如果您希望将此jar作为正常“mvn install”构建的一部分构建和安装,请将以下插件配置添加到您的pom中:
来自http://maven.apache.org/guides/mini/guide-attached-tests.html
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
然后其他项目可以如下引用测试jar:
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
答案 1 :(得分:1)
听起来你需要将它们移动到自己的项目并释放它。从那里,您可以在原始项目中确定您想要的范围。
答案 2 :(得分:1)
正如您所说,将其移至新项目中的src / main。让该项目仅用于测试依赖项,并且不会污染模块的类路径。