Gradle复制资源,processResources

时间:2015-01-15 16:37:05

标签: gradle

我正在尝试将2个文件夹从我的项目文件夹复制到jar中。 当我使用以下设置时,Gradle会复制文件夹中的文件,而不是文件夹本身:

processResources {
    from 'public'
    from 'data'
}

我需要的是将文件夹“projectDir / data”复制到“my.jar / data”。

2 个答案:

答案 0 :(得分:5)

有一种'from'方法,它采用CopySpec进行闭包。

我建议使用它而不是分解成单独的任务或重组你的布局。

processResources {
    from('data') {into 'data'}
    from('publicFolder') {into 'publicFolder'}
}

答案 1 :(得分:3)

如果copy中指定的路径是文件夹,则Gradle中的from规范会复制文件夹的内容。

一种解决方案是使用into directivejar中指定目标文件夹。

processResources {
    from 'data'
    from 'publicFolder'
}

task data(type: Copy) {
    from 'data' into 'data'
}

task publicFolder(type: Copy) {
    from 'public' into 'public'
}

这会将内容或原始文件夹放入jar中具有相同名称的文件夹中。但正如您所看到的,您需要在into闭包中重复文件夹名称。

另一种解决方法是为这些资源文件夹创建一个父文件夹,并在copy规范中使用此父文件夹。

以下是构建资源文件夹的一种方法:

<project-folder>
|
--> res
    |
    --> public
    --> data

然后在copy的{​​{1}}规范中,您可以执行以下操作:

processResources

这将根据您的需要在最终的jar文件中创建文件夹processResources { from 'res' } public