Gradle分发插件:从子项目中添加单独文件夹中的文件

时间:2015-11-23 09:51:04

标签: groovy gradle build.gradle gradle-plugin

我有一个子项目projectB和projectC的多项目构建(projectA)。每个子项目都有我想要添加到zip中的资源。 projectB的资源应该位于zip中名为projectB的文件夹中。

我正在使用分发插件来创建zip。这段代码有效,但无论子项目的数量和名称如何,我都会使用一些代码。

distributions {
    release {
        baseName 'release'
        contents {
            into('projectB') {
                from 'projectB/src/main/resources/'
            }
            into('projectC') {
                from 'projectC/src/main/resources/'
            }
        }
    }
}

我尝试了以下内容:

distributions {
    release {
        baseName 'release'
        contents {
            subprojects.each {
                p -> into(p.name + '-resources') {
                        from p.projectDir + '/src/main/resources/config'
                    }
            }
        }
    }
}

但是没有编译。

有任何建议如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

不确定原因,但它的工作方式如下:

apply plugin: 'distribution'

distributions {
  release {
    baseName 'release'
    contents {
      subprojects.each { p ->
        into("${p.name}-resources") {
          from("${p.projectDir}/src/main/resources/config")
        }
      }
    }
  }
}

好的,明白了。这条线造成了问题:

from(p.projectDir + "/src/main/resources/config")

您无法将File添加到String。所以两人都会做这件事:

from(p.projectDir.toString() + "/src/main/resources/config")
from("${p.projectDir}/src/main/resources/config")

可以找到演示here