2010-12-14 113 views
1

我在maven中創建了一個可以通過實現一些接口進行擴展的庫。爲了測試默認實現,我編寫了一些目前生活在src/test/java的hamcrest匹配器。從maven項目發佈測試工具

但是,我認爲如果他們想測試自定義,他們可能對圖書館的用戶有用。

那麼我該如何讓它們可用?將它們移動到src/main將需要使運行時依賴性成爲Hamcrest,我不希望這樣做。

回答

4

有一種方法可以創建一個測試jar並使用命令'mvn jar:test-jar'將其安裝到存儲庫中。這個jar然後可以被其他項目在依賴塊中使用test-jar修飾符引用。

如果你想擁有這個罐子建造和安裝爲您的正常的一部分,「MVN安裝」構建以下插件配置添加到您的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> 

然後其他項目可以參考測試瓶如下:

<dependency> 
    <groupId>com.myco.app</groupId> 
    <artifactId>foo</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 
1

聽起來你需要將它們移動到他們自己的項目併發布它。從那裏你可以在原始項目中確定你想要的範圍。

+0

但是這會導致循環依賴,不是嗎? – Cephalopod 2010-12-14 22:39:58

+0

這是我一直在使用的解決方案。我不確定哪裏會是循環依賴? – 2010-12-15 03:48:45

+0

不一定。您可以隨時將提議的循環依賴項聲明爲提供的範圍,或者將其排除在依賴於它的項目上。有很多方法可以解決這個問題。 – javamonkey79 2010-12-15 06:50:27

1

正如你所說,把它移到一個新項目的src/main中。讓該項目僅用於測試依賴項,並且不會污染模塊的類路徑。