- 假設有2個maven構件(本地)具有相同的 groupId但具有不同的artifactId。
- 不同的artifactId應該使每個maven神器獨一無二。
- 但是,如果兩個獨特的工件都具有共享相同名稱的類。該類不會是唯一的,因爲當它被導入到java時,它將使用groupId.className格式。並且groupId和className都不唯一(在討論的情況下)。
- 這將導致一個模糊的問題,以確定使用哪個類。
- 經過測試,似乎會使用在pom.xml文件中首先聲明的依賴項。
- 什麼是最好的做法解決/避免這個問題?
- 爲什麼maven的artifactId座標有助於存儲庫內的maven工件的唯一性,但不在java代碼內部?
例如代碼: Maven - Same Class Name Same GroupId Different ArtifactId
- PROJECT1是第一工件。
- Project2是第二個神器。
- 「項目用戶」是將取決於Project1 & Project2的工件/項目。
- Project1 & Project2都有一個名爲
Utilities
的類。 - 類
Utilities
有一個靜態方法public static String getDescription()
返回一個string
包含當前項目的工件座標以及項目名稱。 Utilities.getDescription()
結果String
被調用以查看某個地方是否會發生錯誤,並查看它將如何解決。- 輸出取決於在「Projects User」工件的pom.xml文件中首先聲明瞭哪個依賴項。
編輯:跟進問
- 是否有將同時使用的artifactId和的groupId,而不必做手工每次 時間創建Java包的原型?
類的名稱無關與製品或者的groupId – Jens
Java類,比如'com.mypackage進行訪問。 MyClass不是'groupId.MyClass'。我想,你有兩個具有相同包和同一類的工件。 – NewUser
軟件包名稱應該是唯一的。例如,您應該使用您控制的域名或某種獨特的暱稱或其他類型,然後使用項目名稱。 – xenteros