首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Gradle生成源代码的ZIP?

如何使用Gradle生成源代码的ZIP?
EN

Stack Overflow用户
提问于 2011-01-28 06:11:50
回答 4查看 19.2K关注 0票数 15

我正在将一个相对较小的项目从Ant转换到Gradle。我希望将构建脚本中的行数减少大约75%!

Ant构建所做的一件事就是生成一个源代码ZIP (即整个项目的ZIP,去掉了某些部分- ./build、各种Eclipse文件夹等)。在迁移到Gradle时,我决定使用“包容性”方法,而不是“排他性”方法,这样以后就不会意外地包含内容。

我希望能够获取所有源代码集的源代码和资源,而不必显式列出目录,但我无法使其正常工作。

这是我到目前为止所拥有的(甚至没有运行!):

代码语言:javascript
复制
task srcZip(type: Zip) {
    classifier = 'src'
    from projectDir
    include {
        sourceSets.collect {
            it.allSource.asPath
        }
    }
}

ZIP文件应该以文件夹'src/main/java/...‘、'src/main/resources/...’、'src/test/java/...‘等结尾,并且在以后添加更多源码集时不需要重新访问此任务。

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-29 05:07:51

要将所有源代码放入一个zip文件中,您可以使用以下命令:

代码语言:javascript
复制
task srcZip(type: Zip) {
    classifier = 'src'
    from sourceSets*.allSource
}

但是,它不会给出您所要求的目录结构。来自所有源集的文件被放入相同的层次结构中。

要得到你想要的东西,你可以使用下面的命令:

代码语言:javascript
复制
task srcZip2(type: Zip) {
    classifier = 'src'
    from projectDir
    include 'src/**/*'
}

当然,它不会考虑您可能对源目录位置所做的任何更改。

票数 22
EN

Stack Overflow用户

发布于 2012-09-20 16:16:46

所以,21个月后,我做了以下工作来让它工作(使用Gradle 1.2)

代码语言:javascript
复制
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不是很强大,所以我确信中间可怕的部分可以简化,但现在它可以工作了!

票数 8
EN

Stack Overflow用户

发布于 2016-03-04 18:33:17

这是我们如何创建源代码压缩的另一种方法。我们可以根据需要包括/排除文件。在我正在使用的自定义插件的情况下,我花了很多时间来弄清楚如何让它工作。最后,我可以使用下面的代码来实现:

代码语言:javascript
复制
Task taskSourceZip = project.task("makeSourceZip", type:Zip){
        baseName = "sourceZip"
        from (project.rootDir){
            exclude ('*/*.iml')
            exclude 'sourceZip.zip'
        }
        destinationDir project.rootDir
    }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4822521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档