2

こんにちは、プラグイン拡張値に基づいてタスクを動的に作成および構成しようとしています。問題は評価順序にある​​ようです。回避する方法はありますか?

apply plugin: SetupPlugin 

setup {
     destDir = 'some directory set per project in build.gradle'
     sourceFile = 'some file set per project in build.gradle' 
}


class PluginExtension {
    String destDir
    String sourceFile
}

class SetupPlugin implements Plugin<Project> {
    def placeholders

    void apply(Project project) {
        project.extensions.create("setup", PluginExtension)

        project.task ("setupEnvironment", type: Copy) {
            doFirst() {
                //computes placeholders <-- project.setup has value here
            }

            into (project.setup.destDir){ //<-- project.setup is null
                from project.setup.sourceFile
            }
            filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: placeholders)
        }   
    }
}
4

3 に答える 3

0

applyセットアップ設定を適用する前に呼び出されるためです。

ビルド中にdoFirst後で呼び出されるため、機能します。apply多分あなたのコピーをにラップするかもしれませんdoLastか?

于 2013-04-05T09:57:35.207 に答える