【问题标题】:Mojo Development. How to traverse managed dependencies?莫乔发展。如何遍历托管依赖项?
【发布时间】:2014-03-23 02:33:52
【问题描述】:

我们正在开发一个框架并希望发布a BOM(bill of material) like Spring 4 does。在这个主要的pom.xml 中,我们组件的所有版本都被列为托管依赖项。因为我们有很多组件,所以我们想检查我们的任何组件是否在我们的其他组件中列出了两个不同的版本。

在内部使用 BOM 或创建第二个内部 BOM 不是解决方案,因为这会导致循环依赖。

现在,我的想法是创建一个遍历所有依赖项并查找重复项的 maven 插件。我设法使用“正常”依赖项做到了这一点,但不适用于托管依赖项。

ArtifactFilter myArtifactFilter = new MyArtifactFilter();
rootNode = dependencyTreeBuilder.buildDependencyTree(project, localRepository, artifactFactory, artifactMetadataSource, null, collector);

CollectingDependencyNodeVisitor cdnv = new CollectingDependencyNodeVisitor();
DependencyNodeFilter adnf = new ArtifactDependencyNodeFilter(myArtifactFilter);
DependencyNodeVisitor dnv = new FilteringDependencyNodeVisitor(cdnv, adnf);

rootNode.accept(dnv);

List<DependencyNode> nodes = cdnv.getNodes();

for (int i = 0; i < nodes.size(); i++) {
    getLog().info(i + ": " + nodes.get(i).toNodeString());
}

有谁知道如何获取托管依赖项?

【问题讨论】:

标签: java maven maven-plugin pom.xml maven-dependency-plugin


【解决方案1】:

我是这样解决的:

List<DependencyNode> allNodes = new ArrayList<DependencyNode>();
DependencyManagement dependencyManagement = project.getDependencyManagement();
List<Dependency> dependencies = dependencyManagement.getDependencies();

getLog().info("found the following managed dependencies:");
for (Dependency dependency : dependencies) {
    getLog().info(dependency.toString());
    String groupId = dependency.getGroupId();
    String artifactId = dependency.getArtifactId();
    String version = dependency.getVersion();
    String scope = dependency.getScope();
    String type = dependency.getType();
    Artifact artifact = artifactFactory.createArtifact(groupId, artifactId, version, scope, type);
    MavenProject buildFromRepository = mavenProjectBuilder.buildFromRepository(artifact, remoteRepositories, localRepository);
    allNodes.addAll(getDependencies(buildFromRepository));
}

问题中的代码移至返回依赖列表的getDependencies() 方法中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    相关资源
    最近更新 更多