親プロジェクトからビルドディレクトリにいくつかのソースファイルをコピーし、コピーしたファイルの1つにトークンを上書きしようとするマルチプロジェクトgradleビルドがあります。すべて正常に実行されますが、ファイルは空になります。ここで交換するテンプレートを使用してファイルの抜粋です:Gradleコピーで空のファイルが作成される
---
# file: clients.yaml
#properties shared by all client machines
jmeter_version: "${jmeterVersion}"
はここgradle.propertiesの抜粋です:
jmeterVersion=3.0
そしてここでは、トリックを行うと仮定2つのタスクが
/** This task copies files from pdo-shared */
task copyFromCommonProject(type:Copy, dependsOn: configurations.commonProjectContent){
from configurations.commonProjectContent.collect{ zipTree(it) }
into "$buildDir"
/*doLast {
updateAnsibleTokens.execute()
}*/
}
task updateAnsibleTokens(type: Copy, dependsOn: copyFromCommonProject) {
from "$buildDir/commons/ansible/group_vars/clients.yml"
into "$buildDir/commons/ansible/group_vars/"
expand(jmeterVersion: "$jmeterVersion")
}
いる私はこれを親プロジェクトから実行します。gradle clean :tpcds-benchmark:updateAnsibleTokens
最初のタスクはすべてコピーします。ファイルはどこにあるのか期待どおりに動作しない2番目のタスクです
doLast
セクションにコメントしてください。私はclient.ymlが完全に空
P.S.を終了doLast
セクションのコメントを解除し、両方の場合において、第2のタスク
からdependsOn: copyFromCommonProject
を除去することによってgradle clean :tpcds-benchmark:copyFromCommonProject
ように、これらの2つのタスクを実行しようとしましたexpand(jmeterVersion: "$jmeterVersion")
行を無効にしても空のファイルが表示されます。いくつかのテストでは、ファイル自体をコピーすると空のファイルが生成されるため、おそらく私は間違っているようです。私が持っている同じコードは、目的地のディレクトリだけを変更すると動作します
それは(同じファイルに、ソースとターゲット点として)それ自身の上にファイルをコピーしようとするかのように、第2のタスクが見えます。それは意図されていますか? –
はい。元のファイルには、2番目のタスクの結果として更新する必要があるトークンが含まれています。 – Bostone
@NikitaSkvortsov P.S.を参照してください。元の投稿で – Bostone