小编Gar*_*ams的帖子

Gradle,依赖于订购

在Gradle订购时感到困惑.我是一个新手,之前使用Ant进行构建,与Gradle玩游戏可以解释其中的一些

简短的背景(如果有人会问"为什么你会这样做").我们在war文件中发布了一个Java WebStart应用程序.Java 7(-40以后)正在提示用户有关格式不正确的jar文件缺少元素.我想自动化一场战争的过程; 从'bin'文件夹中提取JavaWS的jar文件; 向Manifest添加元素稍后我将重新签署jar并重新组装战争,但是现在我只想添加Manifest条目.

我的问题是我已经定义了具有dependsOn元素的任务,但是任务似乎以错误的顺序运行(参见下面的gradle文件).我期望的是按顺序运行的任务:delete dir; 得到战争; 没有战争; 将元素添加到jar中.我所看到的(从日志文件中)是:将元素添加到jar中,实际上这会创建一个新的jar,dir被删除并且战争没有变形,所以我最终得到了原始的war文件内容.

我检查了:Gradle任务调用其他任务但是,我似乎根本无法使用mustRunAfter,可能与我拥有的gradle版本有关,但无论如何我真的不想控制不同任务的顺序,我希望(在我基于Ant的思考中)我可以通过让任务相互依赖来定义我想要的顺序.

谁能看到我的构建文件中的缺陷?注意:如果我从resignclientjars任务中删除"dependsOn"并在运行其他任务后手动运行它,它一切正常,我将我的罐子里的新元素放在Manifest中,所以我有一个可行的解决方法,但更喜欢知道我在这里做错了什么.

task (deletework, type: Delete) {
    delete 'workYYY'
}

task (getlaganwar, type: Copy, dependsOn: deletework) {
    from "d:/dev/v8-0-5/wars"
    into "workYYY"
    include 'lagan.war'
}

task (unwar, type: Copy, dependsOn: getlaganwar) {
    from zipTree(file('workYYY/lagan.war'))
    into file("workYYY/lagan")
}

task (resignclientjars, type: Copy, dependsOn: unwar) {
//task (resignclientjars, type: Copy) {

//  mustRunAfter unwar

    def workDir = file("workYYY/lagan")
    def binDir = file(new File(workDir, "bin"))

    def collection = files { binDir.listFiles() …
Run Code Online (Sandbox Code Playgroud)

gradle

9
推荐指数
4
解决办法
2万
查看次数

标签 统计

gradle ×1