我正在尝试将2个文件夹从我的项目文件夹复制到jar中。 当我使用以下设置时,Gradle会复制文件夹中的文件,而不是文件夹本身:
processResources {
from 'public'
from 'data'
}
我需要的是将文件夹“projectDir / data”复制到“my.jar / data”。
答案 0 :(得分:5)
有一种'from'方法,它采用CopySpec进行闭包。
我建议使用它而不是分解成单独的任务或重组你的布局。
processResources {
from('data') {into 'data'}
from('publicFolder') {into 'publicFolder'}
}
答案 1 :(得分:3)
如果copy
中指定的路径是文件夹,则Gradle中的from
规范会复制文件夹的内容。
一种解决方案是使用into
directive在jar
中指定目标文件夹。
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
。