我正在将一个相对较小的项目从Ant转换到Gradle。我希望将构建脚本中的行数减少大约75%!
Ant构建所做的一件事就是生成一个源代码ZIP (即整个项目的ZIP,去掉了某些部分- ./build、各种Eclipse文件夹等)。在迁移到Gradle时,我决定使用“包容性”方法,而不是“排他性”方法,这样以后就不会意外地包含内容。
我希望能够获取所有源代码集的源代码和资源,而不必显式列出目录,但我无法使其正常工作。
这是我到目前为止所拥有的(甚至没有运行!):
task srcZip(type: Zip) {
classifier = 'src'
from projectDir
include {
sourceSets.collect {
it.allSource.asPath
}
}
}
ZIP文件应该以文件夹'src/main/java/...‘、'src/main/resources/...’、'src/test/java/...‘等结尾,并且在以后添加更多源码集时不需要重新访问此任务。
提前感谢!
发布于 2011-01-29 05:07:51
要将所有源代码放入一个zip文件中,您可以使用以下命令:
task srcZip(type: Zip) {
classifier = 'src'
from sourceSets*.allSource
}
但是,它不会给出您所要求的目录结构。来自所有源集的文件被放入相同的层次结构中。
要得到你想要的东西,你可以使用下面的命令:
task srcZip2(type: Zip) {
classifier = 'src'
from projectDir
include 'src/**/*'
}
当然,它不会考虑您可能对源目录位置所做的任何更改。
发布于 2012-09-20 16:16:46
所以,21个月后,我做了以下工作来让它工作(使用Gradle 1.2)
task srcZip(type: Zip) {
classifier = 'src'
from projectDir
include sourceSets*.allSource.srcDirs*.collect { relativePath(it) }.flatten()
include 'LICENCE', 'README', 'NOTICE', 'gradlew*'
}
assemble.dependsOn(srcZip)
我的Groovy-fu不是很强大,所以我确信中间可怕的部分可以简化,但现在它可以工作了!
发布于 2016-03-04 18:33:17
这是我们如何创建源代码压缩的另一种方法。我们可以根据需要包括/排除文件。在我正在使用的自定义插件的情况下,我花了很多时间来弄清楚如何让它工作。最后,我可以使用下面的代码来实现:
Task taskSourceZip = project.task("makeSourceZip", type:Zip){
baseName = "sourceZip"
from (project.rootDir){
exclude ('*/*.iml')
exclude 'sourceZip.zip'
}
destinationDir project.rootDir
}
https://stackoverflow.com/questions/4822521
复制相似问题