会社の OpenVMS ディレクトリ構造にデプロイするGradle 用のプラグインを作成しましdeployDev
た。アプリケーションとは別に構成をデプロイできるように、すべての環境の構成ファイルを別のプロジェクトに抽出しました。deployTest
deployProd
これらのカスタム タスクはアプリケーション プラグインのタスクに依存してdistZip
おり、呼び出されたタスクに基づいて適切な構成ファイルを zip に入れる良い方法が見つかりませんでした (たとえば、開発構成が含まれていますdeployDev
)。
構成フェーズ中に deploy* タスクで構成ファイルをコピーしようとしました。
task distZip(type:Zip, overwrite:true) {
archiveName = 'config.zip'
from "build/props"
}
deployDev.configure {
copyResources('dev')
}
deployTest.configure {
copyResources('test')
}
project.tasks.findByName('deployProd')?.configure {
copyResources('prod')
}
def copyResources(String environment){
copy {
from "src/$environment/resources"
into 'build/props'
}
}
すべてのタスクで構成フェーズが実行されているため、これは機能しません。そのため、 を実行してもdeployDev
、テスト構成が開発リソースにコピーされています。
私も試しました:
file('build/props').mkdirs()
task distZip(type:Zip, overwrite:true) {
archiveName = 'config.zip'
from "build/props"
outputs.upToDateWhen {false}
}
gradle.taskGraph.whenReady { graph ->
if (graph.hasTask('deployProd')) {
copyResources('prod')
}else if(graph.hasTask('deployTest')){
copyResources('test')
}else if(graph.hasTask('deployDev')){
copyResources('dev')
}
}
def copyResources(String environment){
copy {
from "src/$environment/resources"
into 'build/props'
}
}
ただし、この提案では、distZip
タスクは常に最新です。これを行う正しい方法はありますか?