1

我試圖將我的java mvn項目中的依賴項更新爲最新版本。當我在命令下運行時,看到顯示的最新版本,但我在中央存儲庫中看到不同的版本。當我運行版本時看不到最新的依賴項版本:display-dependency-updates

mvn versions:display-dependency-updates -DskipTests=true --update-snapshots install 

例如,當我跑上面的命令,我得到這個爲公共的集合

commons-collections:commons-collections ............ 3.2.1 -> 20040616 

但是,當我瀏覽它在中央資料庫 - commons-collections:MVN Repo, 之後我看到很多的更新20040616

有人可以澄清哪些是最新版本和MVN命令獲取最新?

回答

1

顯示的依賴,更新命令假定版本是根據一個非常特殊的<Major>.<Minor>.<Incremental>-<Qualifier>結構編號,每個版本,Maven的插件Version Number Rules。它通過按照這些標準進行排序來確定「最新」,而不是通過某種時間戳。當使用遵循不同規則的依賴關係時,它不可能告訴你哪個版本實際上更新。可悲的是,這使得顯示依賴性更新幾乎沒有人會希望的那麼有用,但我仍然覺得它作爲檢查和查看可能需要更新哪些依賴性的起點是有用的。

1

不幸的是Maven並不知道什麼時候發佈了依賴關係,它只是比較文本

在你的情況下,公地集合的最新版本:公地集合3.2.1,但如果你比較文本,20040616較大。

所以基本上20040616>3.2.1因爲它認爲20040616是一個主要版本,它大於3

在這裏閱讀更多:https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN402

1

我一般用http://mvnrepository.com找到最新版本的神器,而你用http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22commons-collections%22%20AND%20a%3A%22commons-collections%22。但是,我看到類似的問題。 20040616不是工件的日期,它是工件的版本。由於20040616大於1,2,3或4,所以版本20040616將始終被視爲最新版本。看來這個工件應該從存儲庫中刪除,因爲它不遵守編號規則。我在庫中看到過類似的其他一些問題,但我不確定聯繫誰來糾正它。

http://www.mojohaus.org/versions-maven-plugin/display-dependency-updates-mojo.html display-dependency-updates的描述