我正在尝试创建一个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'].
我已经查看了assemble
任务的规范,它清楚地写着assemble
任务自动dependsOn
项目中的所有存档任务,其中显然包括我的dist
任务。而且似乎没有办法绕过它。
在gradle中正确的方式是什么?如何制作依赖于assemble
task的zip任务?我可以让dist
任务显式地依赖于jar
和war
任务,但我认为这有点违反封装。
我使用gradle-1.0-milestone-3.
提前感谢!
下面是一个完整的示例,说明您的Zip依赖于jar和war任务:
task dist(type:Zip){
from jar.outputs.files
from war.outputs.files
}
您可以执行以下操作将构建的所有已创建的归档文件获取到您的dist zip中:
task dist(type:Zip){
tasks.withType(AbstractArchiveTask).each{ archiveTask ->
if(archiveTask!=dist){
from archiveTask.outputs.files
}
}
}