如何从gradle依赖项检索工件文件和工件元数据?

如何从gradle依赖项检索工件文件和工件元数据?,gradle,Gradle,我想写一个gradle构建任务来执行一些工件的repo复制和reorg。我走了这么远: apply plugin: 'maven' apply plugin: 'maven-publish' repositories { ... } configurations { ... } dependencies { ... } task doit << { configurations.each { configuration -> println co

我想写一个gradle构建任务来执行一些工件的repo复制和reorg。我走了这么远:

apply plugin: 'maven'
apply plugin: 'maven-publish'

repositories {
  ...
}

configurations {
  ...
}

dependencies {
  ...
}

task doit << {
  configurations.each { configuration ->
    println configuration
    configuration.files.each { file ->
      println "  f=${file.path}"
    }
    configuration.dependencies.each { dependency ->
      println "  g=${dependency.group}"
      println "  i=${dependency.name}"
      println "  v=${dependency.version}"
      dependency.artifacts.each { artifact ->
        println "    x=${artifact.classifier}"
        println "    n=${artifact.name}"
        println "    u=${artifact.url}"
      }
    }
  }
}
apply插件:“maven”
应用插件:“maven发布”
存储库{
...
}
配置{
...
}
依赖关系{
...
}
任务doit
println配置
configuration.files.each{file->
println“f=${file.path}”
}
configuration.dependency.each{dependency->
println“g=${dependency.group}”
println“i=${dependency.name}”
println“v=${dependency.version}”
dependency.artifact.each{artifact->
println“x=${artifact.classifier}”
println“n=${artifact.name}”
println“u=${artifact.url}”
}
}
}
}
我无法在dependency.artifacts.each()循环中获得对下载文件的引用

我能做的最好的事情就是通过查看configuration.files来填充数组,然后希望我在工件元数据上的第二组循环与文件的顺序相同。我显然错过了什么


也许有别的办法?我真正想要的是生成一组任务,每个工件一个,这将允许我发布一个带有更改元数据项(即组id、工件id和版本应该更改)的新工件。

您希望迭代解决的依赖项/工件,而不是请求的依赖项/工件。比如:

configuration.resolvedConfiguration.resolvedArtifacts.each { artifact ->
    println artifact.moduleVersion.id.group
    println artifact.moduleVersion.id.name
    println artifact.moduleVersion.id.version
    println artifact.file
}

看起来不太像那样,但我认为这指向了正确的方向。。。我将用一个调试器指出这一点,并进一步检查。我忘记引用工件(已修复)。了解API的一个好方法是查看,它进一步链接到Javadoc/Groovydoc.Ok,谢谢!那一个有效。如果您已经对整个结构感到满意,那么参考是好的。我还在试着去感受它。