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

Gradle distribution plugin: add files from subprojects in separate folders

我有一个包含子项目 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")

您无法将 File 添加到 String。所以两者都可以完成工作:

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

可以找到Demo here