2016-11-07 57 views
1

我在Eclipse中使用GitHub的依賴關係中的Maven項目,它編譯和運行良好。但是,我需要對依賴項進行一些更改,同時仍然保留對其餘功能的訪問權限。顯而易見的解決方案是將其分叉並將新的分支項目替換爲舊的依賴項。到目前爲止,我已經爲自己的帳戶付出了代價,但對Maven來說,這是一個新手,我不確定下一步該做什麼。如何用項目的Maven依賴項替換GitHub上的項目?

在pom中有兩個引用,但是關於進口,還有其他一些我還沒有意識到的引用呢?另外,依賴查找程序似乎無法找到新的分支。恐怕我可能會以一種無意的方式改變某些事情,污染項目併爲自己設置手動修復錯誤數小時。

什麼是正確的方式來消除舊的依賴關係,並把新的完全放在它的位置?

+0

對不起,我對項目和其他地方的所有問題感到分心,我忘記了他的問題。反饋已更新。 – Sargon1

回答

1
  1. 分叉依賴項後,下載本地副本到您的工作站。

  2. 在該副本中,您可以修改此依賴項的Maven座標(工件ID或/和版本)。然後進行更改。

  3. perfom mvn clean install。這會將修改後的依賴項放到您的本地Maven存儲庫(在您的機器上)。

  4. 在項目的pom.xml中引用已更改的依賴項,調整新的座標。

  5. 爲@lexicore寫道:

如果使用不同的groupId/artifactId的(這將是清潔的),你 可能還需要排除其他 依賴原有的依賴。檢查mvn依賴關係:你爲 必須添加排除項的依賴關係樹。

  • 現在自己的項目將使用修改後的依賴。
  • +0

    如果你想使用你的fork進行遠程構建並且有一個倉庫(例如在sonatype或centralRepository中)更新你的groupId並運行'mvn deploy'將它推送到Maven倉庫 – perilandmishap

    1

    什麼是正確的方式來刪除舊的依賴關係,並把新的依賴關係到位?

    無。

    相同的Maven座標===相同的依賴關係。期。如果您想修改某些內容(如您所做的那樣),請使用不同的Maven座標(groupId/artifactId/version)。如果你想改變一些東西,但仍然使用舊座標,你會遇到各種各樣的問題。如何建立知道他們必須使用哪些依賴關係?

    最簡單的方法可能是將版本更改爲更高版本,並明確包含分叉依賴項。因此,直接包含的依賴關係會覆蓋依賴關係圖中的其他版本。

    如果您使用不同的groupId/artifactId(這會更乾淨),您可能還需要從其他依賴項中排除原始依賴項。檢查mvn dependency:tree的依賴性,您必須將exclusions添加到。如果你只是修補一些代碼,改變Maven座標,並建立你的分叉依賴,結果應該有一個正確的pom.xml,所以傳遞性依賴也應該工作。如果原始代碼發生變化,您需要重新設置您的更改。不知道它是否長期可行,您可能想要將您的補丁文件貢獻給原始項目,或請求一個功能,即您定製的部分是可定製的OOTB。

    相關問題