簡體   English   中英

將庫派生上載到Maven Central,groupId!= Java名稱空間

[英]Uploading library fork to Maven Central, groupId != Java namespace

我想將Java庫的fork上傳到Maven。 根據https://maven.apache.org/guides/mini/guide-central-repository-upload.html,我必須選擇一個新的groupId。

現在,groupId與Java名稱空間不再匹配。 我是否還需要重命名所有Java包,還是可以保留原始名稱空間?

例:
原始庫
Maven groupId: org.foo.bar
Java名稱空間: org.foo.bar

叉子:
Maven GroupId: com.acme.bar
Java名稱空間: org.foo.bar

groupId和程序包名稱不一定必須匹配。

事實是,同一軟件包可能會使工具和框架混亂。

假設兩者都有foo.Bar類,但具有不同的API。

例如,將兩個庫都放在類路徑構建工具(例如Maven)上,就不會認識到它在不同版本(版本分辨率)中實際上是相同的依賴項。 稍后在運行時,這意味着類路徑上的foo.Bar的第一個版本將獲勝。 您也許可以使用排除來解決此問題,但這會使構建更加復雜。

OSGi和Jigsaw(Java SE 9)之類的模塊系統也可以在軟件包級別上工作。 您想如何以不與原始軟件包的版本沖突的方式對這些軟件包進行版本控制?

因此,最好的辦法是一起處理原始項目,而不是釋放分支。

如果由於某種原因無法做到這一點,我只會保留相同的軟件包名稱,如果

  • 您非常確定您(或您的庫的任何用戶)不會最終都對classpath有依賴關系

  • 您想要將原始項目的更新合並到您的fork中(如果使用相同的程序包名稱,使用某些VCS可能會更容易)

在所有其他情況下,我建議更改軟件包名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM