2013-02-06 79 views
2

由於maven 3強烈建議指定插件的版本。例如,指定(以指定Java目標版本)行家編譯-插件,行家抱怨如果未指定版本:maven 3:必須指定插件版本,爲什麼?

[WARNING] Some problems were encountered while building the effective model for com.example:ex1:jar:0.0.1-SNAPSHOT 
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 20, column 12 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 

我可以理解的這個邏輯,但是:

如果我沒有指定maven-compiler-plugin,我會得到一個默認版本,對於maven 3.0.4來說是2.3.2。這意味着在正常情況下,你會得到一些插件的默認版本。

問題:插件的默認版本可以隨時間變化嗎?我想是這樣,例如maven 4.x可能會使用編譯器插件的更新的默認版本。

如果是這樣的話,那麼什麼是強迫用戶指定版本的優勢在哪裏?在很多情況下,無論如何,它只會在pom.xml中預見,事先知道將使用哪個maven版本,也就是將使用哪個maven插件版本。

我不明白這背後的邏輯。因此,應該總是強制指定所使用的每個插件的版本(這將非常麻煩)。

回答

2

插件的默認版本是Maven發行包的一部分。所以,它們從發佈到發佈都不相同。這意味着Maven的切換版本可能會讓你感到不快。 Maven dev社區認爲這是一個糟糕的計劃;您應該能夠更改Maven的次要版本而不會丟失構建可重複性(當然,除了錯誤)。所以,我們提出這個警告,輕輕鼓勵你鎖定你的插件版本。

+0

確實。這就是爲什麼我問爲什麼,你不必總是指定插件版本...如果你不提Maven的編譯器插件可言,你隨時都有可能得到一個較新的版本... 所以我的問題的本質是不適當的:如果你明確地指定了一個插件,你必須指定版本,但是你不必指定,只需要獲得一些默認版本(取決於maven版本)。 我會發現它更邏輯(但繁瑣),你必須指定插件版本總是或從不。不僅在某些情況下... – muts

相關問題