2013-05-15 42 views
0

在一個新項目中,我們使用maven。我發現了一個問題,我們通過使用螞蟻目標depend解決了這個問題。問題是我們有一個公共字段被其他類引用。如果我刪除這些字段中的一個,代碼不應該編譯,但似乎所有引用它的類都不會被編譯,儘管編譯了特定的類。做一隻螞蟻取決於maven

maven是否提供了類似於ant depends的函數呢,還是我們做錯了什麼?

+1

如果您顯示pom文件並顯示錯誤消息,則可能會有更好的幫助。 – khmarbaise

+0

我沒有收到錯誤。我只是看到我的更改沒有包含在構建中。其實我期望有一個錯誤,但是由於所討論的類沒有編譯,所以我不會收到任何錯誤,因此也就不會有任何行爲改變。 – homaxto

回答

2

據我所知,maven中沒有ant depend。然而,編譯插件應該檢測到更改並重新編譯它們。但maven編譯使用的是javac,因此它有沒有正確地找到所有相關的變化(當你使用javac構建你的ant項目時出現同樣的問題)。

我做了一個使用maven-compiler-plugin:2.3.2的項目測試,並且發生了問題。但是對我來說,問題就消失了,當我在我的POM指定一個新的編譯器插件:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
</plugin> 

之後,他更編譯的類和它的作品。 你也可以嘗試使用其他編譯器作爲javac,它更適合像eclipse這樣的增量構建,參見non javac compiler docu

對於發佈版本,我總是建議使用mvn clean package,這樣您就可以確定項目是完全編譯的,並且不會受到過時的文件的影響。

更新:

我也發現了錯誤MCOMPILER-160這可能因爲我用的是2.3.2版本,涉及到我的問題。所以也許你也檢查你的編譯器版本。

+0

將版本更改爲3.1爲我做了訣竅:-) – homaxto