我想从我的项目文件夹中复制2个文件夹到jar中。 当我使用后的文件的文件夹内设置摇篮副本,而不是文件夹自理:Gradle复制资源,processResources
processResources {
from 'public'
from 'data'
}
我需要的是有文件夹“PROJECTDIR /数据” copyied到“my.jar /数据”。
我想从我的项目文件夹中复制2个文件夹到jar中。 当我使用后的文件的文件夹内设置摇篮副本,而不是文件夹自理:Gradle复制资源,processResources
processResources {
from 'public'
from 'data'
}
我需要的是有文件夹“PROJECTDIR /数据” copyied到“my.jar /数据”。
的copy
规范中的一个文件夹的副本摇篮内容如果在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
规范的processResources
,你可以做到以下几点:
processResources {
from 'res'
}
这将在创建文件夹public
和data
你想要的最终的jar文件。
有一个'从'的方法,采用CopySpec封闭。
我会推荐使用这个,而不是分解成单独的任务或重构您的布局。
processResources {
from('data') {into 'data'}
from('publicFolder') {into 'publicFolder'}
}
是否可以说“从'projectRoot'文件夹中复制并且只采用'data'和'public'”文件夹? – 2015-01-15 17:14:15
以某种方式对文件夹名称使用过滤器无法正常工作。然而,我已经编辑了一个不涉及重新安排文件夹的主要解决方案。希望有所帮助。我同意理想的方式是从'projectRoot'文件夹中说_copy,并且只包含我想要的文件夹。如果我得到一个解决方案,会发布一个解决方案。 – 2015-01-15 17:38:38
谢谢你的“从入”解决方案。这是我一直在寻找的东西。问题是它不适合我。我得到错误“>找不到方法public()为参数[build_akni020h40dn3k7vwmwbm63ee $ @ _run_closure2_closure3 4d266391]根工程” – 2015-01-21 13:48:33