3

リソースを処理するための次の構成があります。

project.ext.releaseVersion = {
    project.version.contains("SNAPSHOT") ? timestamp : project.version
}

processResources {
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: project.ext.releaseVersion()])
}

動作project.ext.releaseVersion()しますが、構成フェーズで評価され、実行フェーズまで遅らせる方法がわかりません。

4

2 に答える 2

2

これは、フィルターをブロックに適用するのと同じくらい簡単であることがわかりdoFirstます (Peter が上でコメントしたように)。また、更新された値を取得するためのクロージャーを取り除きましたが、それは個人的な好みかもしれません。

processResources {
    doFirst {
        def releaseVersion =
            project.version.contains("SNAPSHOT") ? project.ext.timestamp : project.version

        filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: releaseVersion])
    }
}
于 2013-04-13T18:34:42.057 に答える