6

我想编写一个 gradle build 任务来执行一些工件 repo 复制和重组。我做到了这一点:

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}"
      }
    }
  }
}

我无法获得在dependency.artifacts.each() 循环中对下载文件的引用。

我能做的最好的事情是通过配置文件填充一个数组,然后希望我对工件元数据的第二组循环与文件的顺序相同。我显然错过了一些东西

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

4

1 回答 1

5

您想迭代已解决的依赖项/工件,而不是请求的依赖项/工件。就像是:

configuration.resolvedConfiguration.resolvedArtifacts.each { artifact ->
    println artifact.moduleVersion.id.group
    println artifact.moduleVersion.id.name
    println artifact.moduleVersion.id.version
    println artifact.file
}
于 2013-10-15T23:24:30.920 回答