如何获得;“重新安置”;或者从maven插件中的顶级依赖项解析工件ID
我可能做得不对,但我试图在maven插件中获得项目的顶级依赖项 我可以使用此调用获取所有(顶级和可传递的)依赖项如何获得;“重新安置”;或者从maven插件中的顶级依赖项解析工件ID,maven,maven-plugin,Maven,Maven Plugin,我可能做得不对,但我试图在maven插件中获得项目的顶级依赖项 我可以使用此调用获取所有(顶级和可传递的)依赖项 MavenProject.getArtifacts() MavenProject.getDependencyArtifacts() 我可以使用此调用获取顶级依赖项 MavenProject.getArtifacts() MavenProject.getDependencyArtifacts() 问题是,后一个调用中返回的artifactId有时与前一个调用中的artifact
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坐标的依赖关系。但是工件
是项目上下文中已解决的依赖项(可能省略,可能的可传递工件等)。因此,您不会找到依赖项的“已解析”属性,因为它只对工件有意义。