Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven在远程存储库的特定版本中查找具有可传递依赖项的依赖项_Java_Maven_Dependencies_Repository_Convergence - Fatal编程技术网

Java Maven在远程存储库的特定版本中查找具有可传递依赖项的依赖项

Java Maven在远程存储库的特定版本中查找具有可传递依赖项的依赖项,java,maven,dependencies,repository,convergence,Java,Maven,Dependencies,Repository,Convergence,编辑:“反向依赖性分析”可能是我搜索内容的关键词——不幸的是,我无法正确描述我的问题(可能与此有关——这不是一件标准的事情——我甚至没有真正的用例) 假设我有一个典型的收敛问题,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:transitiv

编辑:“反向依赖性分析”可能是我搜索内容的关键词——不幸的是,我无法正确描述我的问题(可能与此有关——这不是一件标准的事情——我甚至没有真正的用例)

假设我有一个典型的收敛问题,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:另一个直接依赖项:jar:1.1:compile
[INFO]\-(org.not.my.group:transitive-dependency-A:jar:1.18.0:compile-因与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

进一步澄清:在上述(虚构的)szenario中,我将使用三个“级别”的解决方案解决收敛问题,而第一个级别将尽可能成为选择,最近一个级别是“肮脏的修正”

1-Allign versions:如果我的依赖项-自己的或第三方的-直接的或可传递的-确实依赖于同一工件X,但定义了不同的版本,我最好尝试查找X的较新版本,或在树中找到与其余依赖项具有共同版本的X。这样,我假设“适当升级”为X,因为他们可能需要应用代码更改

2-排除依赖项:如果我找不到这样一个工件,我会成功地尝试排除较低版本,希望具有此排除项的依赖项可以处理较新版本。这需要密集的测试,因为我不能保证一个新的版本正确地指向这个版本-我基本上告诉maven“这个依赖项也会与另一个版本的依赖项一起工作,即使这样我也不知道这个依赖项的内部设计”-即使编译工作正常,我仍可能遇到运行时问题

3 -使用依赖性管理:因为使用依赖性管理可以导致“掩饰”(隐藏/ OutsApple)针对强制插件的某些收敛问题,因此我不认为这是一个解决方案(对于我的安装)…假设我遇到了一个收敛问题,并使用DependencyManager解决了它—稍后—一个可传递的依赖项更改,并导致了enforcer插件无法再检测到的类似收敛问题


旁注:我希望我的英语能更好,这样我就更容易描述这些具体的话题了。。。最后你们更容易理解我。感谢我已经收到的输入:)

首先,如前所述,定义那些直接使用的依赖项,而不是依赖于可传递的依赖项

此外,我还将使用它来防止这种情况


...
...
org.apache.maven.plugins
maven enforcer插件
1.4
执行
执行
...
...

如前所述,首先定义那些直接使用的依赖项,而不是依赖于可传递的依赖项

此外,我还将使用它来防止这种情况


...
...
org.apache.maven.plugins
maven enforcer插件
1.4
执行
执行
...
...

由于我的英语技能通常不好,enoth—“反向依赖性分析”是一个让我清楚的术语—有一些插件可以存档,如这里所述

因为我的英语技能通常不好enoth—“反向依赖性分析”这是一个让我明白的术语-有一些插件可以存档,如此处所述

显式使用的依赖项应该显式声明,而不是使用可传递的依赖项,因此您应该完全排除这些依赖项,而不是试图找到导入新的可传递依赖项的方法。。。如果我能很好地理解你,我们就很接近了——因为英语不是我的母语,我可能在理解你和文档方面有问题。我完全同意具体声明依赖项并使用enforcer-plugin。但是,如果第三方人工制品声明为直接依赖项,则会导致传递依赖项的“旧/旧”版本,我不想只是“强制”它希望通过定义直接依赖关系来获得较新版本,但更希望检查是否有第三方的较新版本可能已经使用此可传递依赖关系的较新版本(因为他们必须更改其源以与较新版本兼容)。在这种情况下,我希望找出是否存在(或任何)依赖于特定版本中另一个特定人工制品的人工制品。我试图澄清我的问题,因为我只使用了样本组ID,它确实暗示了所有这些人工制品