編集:David M. Karrの命題を考慮して、質問を言い換えました。
私はgradleプラグインを書いています。このプラグインは、GradleBuild を拡張するタスクを起動しています。外部 gradle ビルド ファイルには、パラメーターとしていくつかの情報が必要です。これらのパラメーターは、プロジェクトの拡張機能で提供されます。
プラグインコード
class MyPlugin implements Plugin<Project> {
def mExt
void apply(Project project) {
mExt = project.extensions.create('myext',MyExt)
project.task('myTask', type:GradleBuild){
def param = new StartParameter()
param.setProjectProperties([target:getTarget()])
// Problem here
startParameter = param
buildFile = getMyBuildPath()
tasks = [
'build',
'generateDebugJavadocJar'
]
}
}
def getMyBuildPath(){
...
}
// Problem here
def getTarget(){
return {mExt.target}
}
}
class MyExt {
def String target = "uninitialised"
}
Gradle ビルド ファイル:
apply plugin : 'com.example.myplugin'
ext{
target = "myTarget"
}
外部 Gradle ビルド ファイル:
task build(){
println project.target
}
にクロージャーを入れると、文字列getTarget()
でprintln project.target
はなくクロージャーが表示されます。
クロージャーを置かない場合:
// Problem here
def getTarget(){
return mExt.target
}
次に、「myTarget」ではなく「uninitialized」になりました。
ここで myext.target の値を取得するにはどうすればよいですか?
私はgradle 2.3を使用しています