使用工件名称

时间:2016-08-18 11:12:10

标签: gradle dependencies unzip

我正在寻找一种方法来将某个配置的项目依赖项提取到工作区文件夹中。由于可能存在多个依赖项,因此我希望将每个工件提取到具有工件名称的文件夹中。我试图在python的上下文中解决这个问题,但这个问题与python无关......

目前我的gradle文件如下所示:

configurations { python }

dependencies {
  python group: 'github.dpeger', name: 'py-utils', version: '1.6', ext: 'zip'
  python group: 'github.dpeger', name: 'py-test', version: '1.6', ext: 'zip'
}

task cleanPythonDependencies(type: Delete) { delete 'lib/python' }
tasks.clean.dependsOn cleanPythonDependencies

task importPythonDependencies(type: Copy) {
  dependsOn cleanPythonDependencies
  from {
    configurations.python.collect { zipTree(it) }
  }
  into 'lib/python'
}

然而,这会将python配置中的所有依赖项提取到文件夹lib\pyhton中,而不使用工件'名。

我想要的是py-utils被提取到lib\pyhton\py-utilspy-testlib\pyhton\py-test

1 个答案:

答案 0 :(得分:3)

假设您希望将py-utils提取到lib \ pyhton \ py-utils并将py-test提取到lib \ pyhton \ py-test ,这应该可以完成这项任务:

task importPythonDependencies() {
  dependsOn cleanPythonDependencies

  String collectDir = 'lib/python'
  outputs.dir collectDir

  doLast {
    configurations.python.resolvedConfiguration.resolvedArtifacts.each { artifact ->
      copy {
        from zipTree( artifact.getFile() )
        into collectDir + '/' + artifact.name
      }
    }
  }
}