参数化gradle任务

时间:2013-06-20 06:34:41

标签: gradle

是否可以参数化任务?例如,我想创建一个将由另外两个任务使用的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>

1 个答案:

答案 0 :(得分:3)

Gradle不支持显式调用任务。相反,您应该声明两个Zip任务。如有必要,您可以声明另一个没有行为的任务,但取决于两个Zip任务。这样的任务称为生命周期任务