Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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
如何获得;“重新安置”;或者从maven插件中的顶级依赖项解析工件ID_Maven_Maven Plugin - Fatal编程技术网

如何获得;“重新安置”;或者从maven插件中的顶级依赖项解析工件ID

如何获得;“重新安置”;或者从maven插件中的顶级依赖项解析工件ID,maven,maven-plugin,Maven,Maven Plugin,我可能做得不对,但我试图在maven插件中获得项目的顶级依赖项 我可以使用此调用获取所有(顶级和可传递的)依赖项 MavenProject.getArtifacts() MavenProject.getDependencyArtifacts() 我可以使用此调用获取顶级依赖项 MavenProject.getArtifacts() MavenProject.getDependencyArtifacts() 问题是,后一个调用中返回的artifactId有时与前一个调用中的artifact

我可能做得不对,但我试图在maven插件中获得项目的顶级依赖项

我可以使用此调用获取所有(顶级和可传递的)依赖项

MavenProject.getArtifacts()
MavenProject.getDependencyArtifacts()
我可以使用此调用获取顶级依赖项

MavenProject.getArtifacts()
MavenProject.getDependencyArtifacts()
问题是,后一个调用中返回的artifactId有时与前一个调用中的artifactId不同。当依赖项被“重新定位”时,例如xerces:xerces:2.4.0,就会发生这种情况

 <project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>xerces</groupId>
  <artifactId>xerces</artifactId>
  <version>2.4.0</version>
  <distributionManagement>
    <relocation>
      <groupId>xerces</groupId>
      <artifactId>xercesImpl</artifactId>
    </relocation>
  </distributionManagement>
 </project>

4.0.0
薛西斯
薛西斯
2.4.0
薛西斯
干细胞移植

如果开发人员在pom中指定xerces:xerces:2.4.0,getArtifacts()将返回xerces:xercesImpl。但是getDependencyArtifacts()返回xerces:xerces。

您的Maven版本是什么?还有你的插件的
maven插件api
版本?另外,
getDependencyArtifacts()
已被弃用(可能是问题所在),直接依赖关系是通过获取的。您的插件是如何定义的?它定义依赖关系解析吗?除此之外,插件的用途是什么?@Tunaki mvn和maven插件api都是v3.3.3。我尝试了getDependencies(),但是它的getGroupId()和getArtifactId()返回了预先重新定位的GAVIn。在这种情况下,您可以在内存中构建项目。然后,当您拥有基于工件的
MavenProject
时,您可以调用
MavenProject.getDistributionManagement().getRelocation()
来访问relocation元素。不过,这感觉像是一种非常粗糙的方式=/。@kane是的,这实际上是
依赖项
工件
之间的真正区别。
依赖关系
只是一个具有Maven坐标的依赖关系。但是
工件
是项目上下文中已解决的依赖项(可能省略,可能的可传递工件等)。因此,您找不到
依赖项的“已解析”属性,因为它只适用于
工件?还有你的插件的
maven插件api
版本?另外,
getDependencyArtifacts()
已被弃用(可能是问题所在),直接依赖关系是通过获取的。您的插件是如何定义的?它定义依赖关系解析吗?除此之外,插件的用途是什么?@Tunaki mvn和maven插件api都是v3.3.3。我尝试了getDependencies(),但是它的getGroupId()和getArtifactId()返回了预先重新定位的GAVIn。在这种情况下,您可以在内存中构建项目。然后,当您拥有基于工件的
MavenProject
时,您可以调用
MavenProject.getDistributionManagement().getRelocation()
来访问relocation元素。不过,这感觉像是一种非常粗糙的方式=/。@kane是的,这实际上是
依赖项
工件
之间的真正区别。
依赖关系
只是一个具有Maven坐标的依赖关系。但是
工件
是项目上下文中已解决的依赖项(可能省略,可能的可传递工件等)。因此,您不会找到
依赖项的“已解析”属性,因为它只对
工件有意义。