【问题标题】:How do you programmatically access resolved implementation dependencies?您如何以编程方式访问已解决的实现依赖项?
【发布时间】:2020-05-05 04:28:58
【问题描述】:

我想访问有关已通过平台 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 文件中获取版本。

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

【问题讨论】:

    标签: java gradle dependencies dependency-management


    【解决方案1】:

    使用 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 中获取。

    【讨论】:

    猜你喜欢
    • 2014-08-05
    • 2016-03-27
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2010-10-01
    • 2019-01-29
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多