Gradle Zip任务做多个子树?

Ala*_*ger 14 java zip gradle

我们试图在Gradle中从多个文件系统源代码树中构建一个复杂的Zip文件,但无论into我们提供多少规范,它们都将它们放在同一个文件系统中.这可以在Gradle中做到吗?

build/libs/foo.jar --> foo.jar
bar/*              --> bar/*
Run Code Online (Sandbox Code Playgroud)

我们得到的是:

build/libs/foo.jar --> bar/foo.jar
bar/*              --> bar/*
Run Code Online (Sandbox Code Playgroud)

使用这个:

task installZip(type: Zip, dependsOn: jar) {
    from('build/libs/foo.jar').into('.')
    from('bar').into('bar')
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

编辑:Gradle 1.0-milestone-3

小智 23

试试这个:

task zip(type: Zip) {
    from jar.outputs.files
    from('bar/') {
        into('bar')
    }
}
Run Code Online (Sandbox Code Playgroud)

首先......罐子应该在拉链的根部(这似乎是你想要的).其次,通过指定from jar.outputs.files,dependsOnjar任务中有一个隐含的,所以这显示了另一种完成你想要的方法.除了这种方法,如果罐子名称随时间变化,则无关紧要.如果您需要其他帮助,请与我们联系.


小智 7

显然对答案的评论不允许以方便的方式显示更多代码...或者它不是很明显:)我有一个项目是为客户...所以我不能分享完整的项目/构建文件.这是我可以分享的内容(我将项目特定的acron更改为XXX):

task zip(type: Zip) {

    from jar.outputs.files

    from('scripts/') {
        fileMode = 0755
        include '**/runXXX.sh'
        include '**/runXXX.bat'
    }
    from('lib/') {
        include '**/*.jar'
        into('lib')
    }
    from('.') {
        include 'xxx.config'
    }

}

这会在zip的根目录中创建一个带有项目jar的zip.将脚本从目录复制到根目录,将配置文件复制到根目录,并在名为/ lib的zip的根目录中创建目录,并将所有jar从项目/ lib复制到zip/lib.