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

Groovy Gradle分发插件:将子项目中的文件添加到单独的文件夹中,groovy,gradle,build.gradle,gradle-plugin,Groovy,Gradle,Build.gradle,Gradle Plugin,我有一个包含子项目projectB和projectC的多项目构建(projectA)。每个子项目都有我想添加到zip的资源。projectB的资源应该位于zip中名为projectB的文件夹中 我正在使用分发插件创建zip。这段代码可以工作,但我希望有一些代码可以工作,而不管子项目的数量和名称如何 distributions { release { baseName 'release' contents { into('projec

我有一个包含子项目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'
                    }
            }
        }
    }
}
但这并不能编译


有什么建议可以实现这一点吗?

不知道为什么,但它的工作原理如下:

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")
无法将
文件添加到
字符串中。因此,两者都将起作用:

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

可以找到演示。

您写下该行导致了问题,但也写下两者都可以完成任务?你是想把第一行改成别的吗?