2016-01-31 671 views
0

我有一個多模塊Maven項目,其中模塊FooBar是Java包。 Foo包含從Bar繼承的類。 FooBar都有測試和調試的主要方法。模塊駐留在文件夾ProjectMaven多模塊項目中的源依賴項 - 無法自行編譯模塊

編譯整個項目使用mvn clean package工作正常。但不能使用Bar模塊中的相同命令進行編譯。

Project存在包含一個pom.xml:

... 
<module>Foo</module> 
<module>Bar</module> 
<module>FooBar</module> 
... 

Barpom.xml包含:

... 
    <dependency> 
     <groupId>com.example.foo</groupId> 
     <artifactId>Foo</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </dependency> 
    ... 

當試圖使用Maven從模塊文件夾內的編譯Bar我得到錯誤,無法找到兄弟軟件包Foo。下載的其他依賴項正常工作。

我在做什麼錯?

對於Maven來說,我很新,這似乎是一個初學者錯誤,所以我假設有一個簡單的答案。

回答

2

爲了編譯Bar模塊,人造體com.example.foo:Foo:1.0.0-SNAPSHOT必須至少從本地Maven存儲庫中檢索。

當執行目標install時,人造物保存在本地存儲庫中。由於您在整個構建中只執行clean package,因此不會發生這種情況。

您必須對人工製品Foo或整個項目執行installclean install。每次你更新版本時,你也必須重建整個項目(或者至少是本地依賴項)。

+0

所以你說的是我需要在本地存儲庫中有一個編譯好的'Bar'模塊.jar?那隻能通過'mvn clean install'在那個包上實現嗎?另外,當我在'Foo'包上執行'mvn clean install'時,Bar'.jag仍然會保留在本地回購中嗎?對不起所有的問題,我現在沒有可用的源代碼來測試。 –

+0

@EinarSundgren是的,是的(儘管Maven的軟件包術語是人造的),是的。 – hotzst