[英]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.