我在maven中創建了一個可以通過實現一些接口進行擴展的庫。爲了測試默認實現,我編寫了一些目前生活在src/test/java
的hamcrest匹配器。從maven項目發佈測試工具
但是,我認爲如果他們想測試自定義,他們可能對圖書館的用戶有用。
那麼我該如何讓它們可用?將它們移動到src/main
將需要使運行時依賴性成爲Hamcrest,我不希望這樣做。
我在maven中創建了一個可以通過實現一些接口進行擴展的庫。爲了測試默認實現,我編寫了一些目前生活在src/test/java
的hamcrest匹配器。從maven項目發佈測試工具
但是,我認爲如果他們想測試自定義,他們可能對圖書館的用戶有用。
那麼我該如何讓它們可用?將它們移動到src/main
將需要使運行時依賴性成爲Hamcrest,我不希望這樣做。
有一種方法可以創建一個測試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>
聽起來你需要將它們移動到他們自己的項目併發布它。從那裏你可以在原始項目中確定你想要的範圍。
正如你所說,把它移到一個新項目的src/main中。讓該項目僅用於測試依賴項,並且不會污染模塊的類路徑。
但是這會導致循環依賴,不是嗎? – Cephalopod 2010-12-14 22:39:58
這是我一直在使用的解決方案。我不確定哪裏會是循環依賴? – 2010-12-15 03:48:45
不一定。您可以隨時將提議的循環依賴項聲明爲提供的範圍,或者將其排除在依賴於它的項目上。有很多方法可以解決這個問題。 – javamonkey79 2010-12-15 06:50:27