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

Java 如何以编程方式访问已解决的实现依赖项?,java,gradle,dependencies,dependency-management,Java,Gradle,Dependencies,Dependency Management,我想访问关于已解决的实现依赖项的元数据,该实现依赖项的版本通过平台bom设置 dependencies { implementation platform("internal.spinnaker:clouddriver-bom:${spinnakerRelease}") annotationProcessor platform("internal.spinnaker:clouddriver-bom:${spinnakerRelease}") testAnn

我想访问关于已解决的实现依赖项的元数据,该实现依赖项的版本通过平台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中的一个条目,以便可以像这样使用它:

我不知道如何在任务或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]
实现
配置中的任何依赖项都将显示在编译类路径上,如下图所示


我或多或少都能让它发挥作用。我不得不做一些恶作剧,让它在应用阶段的插件中工作。