簡體   English   中英

Maven查找在遠程存儲庫中特定版本中具有傳遞依賴項的依賴項

[英]Maven find dependency having a transitive dependency in a specific version in a remote repository

編輯:“逆向相關性分析”將是我搜索的關鍵字-不幸的是,我無法正確描述我的問題(也許這與不符合標准的事情有關-我甚至沒有真正的用例為了這)。

說我有一個典型的收斂性問題,並且dependency:tree告訴我這樣的事情:

[INFO] com.my.group:myProject:jar:1.0.1 [INFO] +- org.not.my.group:a-direct-dependency:jar:1.1:compile [INFO] | \\- org.not.my.group:transitive-dependency-A:jar:1.14.0:compile [INFO] \\- org.not.my.group:another-direct-dependency:jar:1.1:compile [INFO] \\- (org.not.my.group:transitive-dependency-A:jar:1.18.0:compile - omitted for conflict with 1.14.0)

有沒有一種方法可以分析中央存儲庫(也可以使用nexus webgui)來確定是否存在依賴於傳遞依賴的org.not.my.group:a-direct-dependency:jar的(較新版本) org.not.my.group:transitive-dependency-A:jar但版本為1.18.0而不是1.14.0?

或通常被問到:我可以通過中央存儲庫(或任何遠程存儲庫)找出誰依賴工件,就像我在本地使用它一樣?

mvn dependency:tree -Dincludes=org.not.my.group:transitive-dependency-A:jar:1.18.0 -Dverbose

為了進一步說明:在上面的(假想的)方案中,我將使用三個“級別”的解決方案來解決收斂問題,而第一個可能的選擇就是第一個,最新的是“不正確的修正”。

1-Allign版本 :如果我的依賴項-自己或第三方-直接或傳遞-確實依賴於相同的工件X但定義了不同的版本,我最好嘗試找到X的較新版本或樹中對X的依賴項其余依賴項的通用版本。 這樣,我假設X是“適當升級”的,因為他們可能需要應用代碼更改。

2-排除依賴項:如果我找不到這樣的工件,我將成功嘗試排除較低的版本,希望具有此排除項的依賴項可以處理較新的版本。 這需要嚴格的測試,因為我沒有保證可以正確指向該版本的較新版本-我從根本上告訴maven“該依賴項也將與版本的另一個依賴項一起工作,即使這樣我也沒有對該依賴項的內部設計的想法“-即使編譯有效,我仍然可能會遇到運行時問題。

3-使用dependencyManagement:由於使用dependencyManagement可能會導致“掩碼”(隱藏/出站)強制實施程序插件的某些收斂性問題,我實際上不再認為這是解決方案(針對我的設置)..說我遇到了收斂性問題並使用了dependencyManagement解決了這個問題-后來-傳遞依賴項之一發生更改,並導致了類似的收斂性問題,強制執行器插件不再能夠檢測到該問題。

旁注:我希望我的英語會更好,這樣我可以更輕松地描述這樣的特定主題……最終,你們也更容易理解我。 感謝您已經收到我的輸入:)

如前所述,首先定義直接使用而不依賴於傳遞依賴的那些依賴。

此外,我將使用maven-enforcer-plugin來防止這種情況。

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
            <id>enforce</id>
            <configuration>
              <rules>
                <dependencyConvergence/>
              </rules>
            </configuration>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

通常,我的英語技能不是很好。-“逆向依賴性分析”本來可以使自己更清楚-有一些插件可以對此進行存檔,例如http://tech.finn.no/2013/01 / 31 / i-wish-i-know-my-consumers-maven-reverse-dependency /

暫無
暫無

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

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