复制在gradle中工作但zip会产生奇怪的错误

Dea*_*ler 2 gradle

我试图在gradle中使用zip并且我的构建工作正常,直到我将其添加到我的"webserver"项目部分(也许我的问题应该是为什么副本在它前面没有任务工作?????. ..如果您需要在zip前面执行任务但不在下面复制,我真的很困惑复制和zip之间的区别)

assemble << {
    zip {
       from '.'
       includes ['app/*','conf/*','public/*','play-1.2.4/*','run*.sh']
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是

  • 出了什么问题:任务'执行失败':webserver:assemble'.

    在任务':webserver:assemble'上找不到参数[build_3nljqgmljp29v06751h102sq8b $ _run_closure3_closure16_closure18 @ 7cc8e407]的方法zip().

我不明白,因为我正在成功使用副本

copy { from fixedLibDir into genLibDir }
Run Code Online (Sandbox Code Playgroud)

另外,我对文档中的文档感到非常困惑,他们几乎总是这样

task myZip(type: Zip) {

}
Run Code Online (Sandbox Code Playgroud)

我只是想调用一个zip任务而不是每次都创建一个新的,所以文档示例似乎非常糟糕......它们应该是使用zip任务而不是创建一个新任务的例子(毕竟,谁想创建一个一个已经存在的新zip任务??) 或者我在这里遗漏了什么? 无论如何,当我开始使用gradle时,这让我很困惑,我猜它会让其他人感到困惑.显示使用它并定义一个新的可能会很好(虽然我仍然不明白为什么我会定义一个新的).

更多信息/更新:我也试过这个运行的代码,我看到打印输出消息,但我看到我的webserver/output/libs目录中没有zip文件,正如我所期望的那样???

assemble << {
    println "I'm zipping up now"
    task zip(type: Zip) {
        from('.') {
            fileMode = 0755
            include 'run*.sh'
            include 'app/*'
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

后来,迪恩

rod*_*ion 5

原因之所以如此copy,是因为它是一个全局效用函数Project(见这里).所以你可以copy从任何地方打电话,它会起作用.

另一方面,没有相同的zip方法.也许,因为压缩通常需要比复制更多的配置,比如指定zip存档名称,或者他们可能只是错过了它.这意味着您必须使用task zip(type: Zip){ from ... into ... } zip 的语法.