3

是否可以对任务进行参数化?例如,我想创建一个 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>
4

1 回答 1

3

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

于 2013-06-20T07:15:32.777 回答