您如何以编程方式访问已解决的实现依赖项?

How do you programmatically access resolved implementation dependencies?

我想访问有关已通过平台 bom 设置版本的已解决实现依赖项的元数据

  dependencies {
      implementation platform("internal.spinnaker:clouddriver-bom:${spinnakerRelease}")
      annotationProcessor platform("internal.spinnaker:clouddriver-bom:${spinnakerRelease}")
      testAnnotationProcessor platform("internal.spinnaker:clouddriver-bom:${spinnakerRelease}")

      implementation "com.netflix.spinnaker.clouddriver:clouddriver-web"
      implementation "com.netflix.spinnaker.clouddriver:clouddriver-core"
      implementation "com.netflix.spinnaker.clouddriver:clouddriver-security"
  }

我希望能够以编程方式访问已解析的 clouddriver-web 版本。 我在网上能找到的所有解决方案都引用这样的代码。

configurations.compile.resolvedConfiguration.firstLevelModuleDependencies

您无法使用实现配置执行此操作,因为它会引发无法解析的错误。

最终目标是让已解析的依赖项成为 META-INF/build-info.properties 中的一个条目,以便可以像这样使用它:https://www.vojtechruzicka.com/spring-boot-version/

我不知道如何在任务或 gradle 文件中获取版本。

任何帮助将不胜感激,干杯!

使用 Gradle 6.0,以下 build.gradle

plugins {
  id 'java'
}

repositories {
  jcenter()
}

dependencies {
  implementation 'com.google.guava:guava:29.0-jre'
}

task log {
  doLast {
    println(configurations.compileClasspath.resolvedConfiguration.firstLevelModuleDependencies)
  }
}

当 运行 与:

./gradlew :log

打印:

> Task :log
[com.google.guava:guava:29.0-jre;compile]

implementation 配置中的任何依赖项都将显示在编译类路径中,如下图所示,我从 The Java Plugin.

中获取