実行中にExecに変数を渡すにはどうすればよいですか? 現在のビルド コマンドを実行するパス スルー gradle ファイルを作成したいと考えています。これにより、構成をビルド サーバー プランからソース管理管理の build.gradle ファイルに移動できます。これは、より大きなプロジェクトに備えて gradle を知ることの一部でもあります。
構成にさまざまな変数を使用してコマンドを実行したいと考えています。Ant では、プロパティを設定し、ネストされた env ブロックを介して exec に渡します。Gradleでは、タスクの環境とマージするマップを作成していますが、これは機能していません。
'<<' を checkenv に追加できないため、タスク コードは、入力される前に buildEnvironmentVariables を実行するか、間違ったスコープにあります。適切なタスク構成に従っていないことはわかっています。
提案を提供するか、マニュアル/ドキュメントの適切な部分を教えてください。
build.gradle - gradle checkenv の実行
def buildEnvironmentVariables = [:]
task setEnv() << {
buildEnvironmentVariables['JAVA_OPTS']="-XX:ErrorFile=foo/logs"
}
task checkenv(dependsOn: 'printEnv', type:Exec) {
workingDir '../..'
executable = 'cmd'
environment << buildEnvironmentVariables
println "buildEnvironmentVariables = " << buildEnvironmentVariables['JAVA_OPTS']
args = ['/c','set','JAVA_OPTS']
}
プロジェクトにタスクを追加するのは、それが「ターゲット」に相当し、最上位タスク内の exec のようなアクションをカプセル化する場合に限るべきですか?
追加されたタスクはアリのターゲットのようなもので、カプセル化されたタスクはアリのタスクのようなものですか?
def buildEnvironmentVariables = [:]
task setEnv() << {
buildEnvironmentVariables['JAVA_OPTS']="-XX:ErrorFile=foo/logs"
}
task checkenv(dependsOn: 'printEnv') << {
println "buildEnvironmentVariables = " << buildEnvironmentVariables['JAVA_OPTS']
ext.check = exec() {
workingDir '../..'
executable = 'cmd'
environment << buildEnvironmentVariables
args = ['/c','set','JAVA_OPTS']
}
}
ありがとう