同じbuild.gradleファイルで、あるタスクから別のタスクに変数を渡します。最初のgradleタスクが最後のコミットメッセージをプルします。このメッセージを別のタスクに渡す必要があります。コードは次のとおりです。事前に助けてくれてありがとう。
task gitMsg(type:Exec){
commandLine 'git', 'log', '-1', '--oneline'
standardOutput = new ByteArrayOutputStream()
doLast {
String output = standardOutput.toString()
}
}
変数 'output'を以下のタスクに渡したいです。
task notifyTaskUpcoming << {
def to = System.getProperty("to")
def subj = System.getProperty('subj')
def body = "Hello... "
sendmail(to, subj, body)
}
Gitメッセージを「body」に組み込みたいです。
output
メソッドの外部で、ただしスクリプトルートでdoLast
変数を定義してから、別のタスクで単純に使用できます。ちょうど例:
//the variable is defined within script root
def String variable
task task1 << {
//but initialized only in the task's method
variable = "some value"
}
task task2 << {
//you can assign a variable to the local one
def body = variable
println(body)
//or simply use the variable itself
println(variable)
}
task2.dependsOn task1
ここに定義された2つのタスクがあります。 Task2
はTask1
に依存します。つまり、2番目は1番目の後にのみ実行されます。 String型のvariable
は、ビルドスクリプトルートで宣言され、task1
doLast
メソッドで初期化されます(注:<<
はdoLast
と等しい)。その後、変数は初期化され、他のタスクで使用できます。
グローバルプロパティは避けるべきだと思いますが、gradleはプロパティをタスクに追加することで、これを実現する良い方法を提供します。
task task1 {
doLast {
task1.ext.variable = "some value"
}
}
task task2 {
dependsOn task1
doLast {
println(task1.variable)
}
}