我正在尝试创建一个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任务?我可以明确依赖dist
和jar
任务来war
任务,但我认为这有点违反了封装。
我正在使用gradle-1.0-milestone-3。
提前致谢!
答案 0 :(得分:12)
这是一个完整的例子,让你的Zip依赖于jar和战争任务:
task dist(type:Zip){
from jar.outputs.files
from war.outputs.files
}
答案 1 :(得分:0)
您可以执行以下操作,将所有已构建的构建存档存入您的dist zip:
task dist(type:Zip){
tasks.withType(AbstractArchiveTask).each{ archiveTask ->
if(archiveTask!=dist){
from archiveTask.outputs.files
}
}
}