从maven项目发布测试工具

时间:2010-12-14 22:08:41

标签: java unit-testing maven-2 hamcrest

我在maven中创建了一个可以通过实现某些接口来扩展的库。为了测试默认实现,我编写了一些目前存在于src/test/java中的hamcrest匹配器。

但是,我认为如果他们想要测试他们的自定义,他们可能对图书馆的用户有用。

那我怎么能让他们可用?将它们移动到src/main需要使hamcrest成为运行时依赖项,我不希望这样。

3 个答案:

答案 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。让该项目仅用于测试依赖项,并且不会污染模块的类路径。