是否可以参数化任务?例如,我想创建一个将由另外两个任务使用的zip任务,但这些任务需要传递一些额外的信息信息,这个zip任务(例如zip名称)。
这就是我希望它的工作方式。如果不可能,我该怎么办?或者,如果我能有更好的解决方案吗?
task zipFile(type: Zip) {
from files('dist/zip')
destinationDir = file('dist')
archiveName = myArchiveName // myArchiveName should be passed as property
}
task zipTwoFiles << {
// create first archive
zipFile.execute() // how to pass property to this task?
// create second archive
zipFile.execute() // how to pass property to this task?
}
我想这样做是因为这是我将项目从ant迁移到gradle的第一步。在蚂蚁中它看起来像这样:
<target name="zipFile">
<zip destfile="dist/${myArchiveName}" basedir="dist/zip" />
</target>
<target name="zipFile1">
<antcall target="zipFile">
<param name="myArchiveName" value="myarchive.zip" />
</antcall>
<antcall target="zipFile">
<param name="myArchiveName" value="myarchive2.zip" />
</antcall>
</target>
答案 0 :(得分:3)
Gradle不支持显式调用任务。相反,您应该声明两个Zip
任务。如有必要,您可以声明另一个没有行为的任务,但取决于两个Zip
任务。这样的任务称为生命周期任务。