首页 文章

如何在Gradle中创建包含项目jar和war的分发存档(zip)

提问于
浏览
6

我正在尝试创建一个Zip任务,该任务将为我的项目创建一个包含项目jar文件和war(以及可能由 assemble 任务生成的其他构建工件)的分发包 .

所以我尝试编写这个简单的脚本

task dist(dependsOn: 'assemble', type: Zip){
  into('lib'){
    from 'build/libs' //contains jar and war files
  }
  ... //other stuff
}

任务 dist 取决于 assemble ,因为它方便地包含创建jar和war文件的任务 .

但是如果我尝试执行它,gradle会抱怨此错误消息:

Circular dependency between tasks. Cycle includes [task ':assemble', task ':dist'].

我已经检查了specification for assemble task,并清楚地写了 assemble 任务自动 dependsOn 项目中的所有存档任务,显然包括我的 dist 任务 . 似乎没有办法绕过它 .

在gradle中这样做的正确方法是什么?如何制作依赖于 assemble 任务的zip任务?我可以明确依赖 jarwar 任务使 dist 任务,但我认为这有点违反了封装 .

我正在使用gradle-1.0-milestone-3 .

提前致谢!

2 回答

  • 12

    这是一个完整的例子,让你的Zip依赖于jar和战争任务:

    task dist(type:Zip){
        from jar.outputs.files
        from war.outputs.files
    }
    
  • 0

    您可以执行以下操作将所有已构建的构建存档存入您的dist zip:

    task dist(type:Zip){
        tasks.withType(AbstractArchiveTask).each{ archiveTask ->
            if(archiveTask!=dist){
                from archiveTask.outputs.files
            }
        }
    }
    

相关问题