2013-03-04 64 views
4

我有一個用@requiresDependencyResolution測試註釋的mojo。Mojo開發 - 處理多模塊項目中未解決的依賴關係

它適用於具有單層嵌套的多模塊項目,但用戶報告瞭如下結構的問題。

-- my_project 
    | 
    -- pom.xml 
    -- submodule1 
     | 
     -- pom.xml 
    -- submodule2 
     | 
     -- pom.xml 
     -- submodule21 
     | 
     -- pom.xml 
     -- submodule22 
     | 
     -- pom.xml 

如果submodule21取決於submodule1行家報告

無法執行項目submodule21目標:無法解析 依賴項目org.my:submodule21:jar:1.0-SNAPSHOT:莫非 不找到神器org.my:submodule1:jar:1.0-SNAPSHOT

卸下requiresDependencyResolution =測試註釋防止這個問題,但當時我沒有訪問Informa公司我需要mojo運行。

從github上的surefire代碼的簡短掃描,它看起來也使用requiresDependencyResolution = test,但能夠在沒有問題的情況下運行該項目。

https://github.com/apache/maven-surefire/blob/master/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java

https://github.com/apache/maven-surefire/blob/master/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java

從我自己的代碼,唯一明顯的區別是,它使用了Java註釋,而不是老式的javadoc的。

萬無一失的mojo如何實現這一目標?

我的代碼是

http://code.google.com/p/pitestrunner/source/browse/pitest-maven/src/main/java/org/pitest/maven/PitMojo.java

示例項目顯示問題

http://code.google.com/p/pitestrunner/issues/detail?id=71

+0

基於錯誤消息,我會假設在這個多模塊構建中的依賴關係是不正確的,如果依賴關係正確的話,如果沒有任何問題,通過* mvn安裝將構件安裝到本地存儲庫時應該可以正常工作* – khmarbaise 2013-03-06 13:00:42

+0

This是我的第一個想法 - 但錯誤只發生在我自己的插件上,不一定會發生。如果項目在某種程度上不正確的設置,我希望這兩個插件都顯示相同的錯誤。 – henry 2013-03-06 22:28:19

+0

您是否閱讀了@requiresDependencyCollection的描述?也許你在處理鏈中太早,實際上依賴關係還沒有放到類路徑中? – user1050755 2013-03-20 04:43:25

回答

0

對於任何人的利益別人有這個問題 - 我終於解決了這個問題。這個插件沒有問題。

surefire和我自己的插件之間的區別僅僅是它們運行的​​方式。 Surefire被綁定到測試階段,我自己的插件直接通過調用目標來運行。當我將我的插件綁定到驗證階段時,所有事情都可以毫無問題地解決。