【问题标题】:How can I get a the runtime dependencies along with the coordinates and the JAR file of a Gradle project?如何获取运行时依赖项以及 Gradle 项目的坐标和 JAR 文件?
【发布时间】:2021-12-27 22:44:39
【问题描述】:

我正在编写一个自定义 Gradle 任务,该任务需要迭代所有运行时依赖项(包括所有传递依赖项)。我需要每个依赖项的组、名称和版本以及 JAR 的路径。

Gradle API 似乎确实有一个ResolvedDependecy,但我不知道如何获取它们。 https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/ResolvedDependency.html

关于工件、模块和依赖项https://docs.gradle.org/current/userguide/dependency_management_terminology.html 似乎也有相当棘手的术语,这让我对如何遍历它感到迷茫?我的假设是我需要使用getProject().getConfigurations().getByName("rutime") 获取运行时配置。

【问题讨论】:

    标签: java gradle dependencies gradle-plugin


    【解决方案1】:

    我编写了这段 sn-p 代码,虽然我不确定这是否正确,但它会产生一些结果。这似乎是完成工作。

    import java.util.Collection;
    import java.util.function.Function;
    import java.util.stream.Stream;
    
    import org.gradle.api.artifacts.Configuration;
    import org.gradle.api.artifacts.ResolvedDependency;
    
    public class Dependencies {
    
        private static <T> Stream<T> of(T node, Function<T, Collection<T>> childrenFn) {
            return Stream.concat(Stream.of(node), childrenFn.apply(node).stream()
                    .flatMap(n -> of(n, childrenFn)));
        }
    
        private static Stream<ResolvedDependency> of(ResolvedDependency node) {
            return of(node, ResolvedDependency::getChildren);
        }
    
        @SuppressWarnings("CodeBlock2Expr")
        public static void doIt(Configuration configuration) {
            configuration.getResolvedConfiguration()
                    .getFirstLevelModuleDependencies()
                    .stream()
                    .flatMap(Dependencies::of)
                    .flatMap(dependency -> {
                        return dependency.getModuleArtifacts().stream();
                    })
                    .distinct()
                    .forEach(artifact -> {
                        System.out.println(artifact.getFile());
                    });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-09
      • 2017-11-26
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多