1

会社の OpenVMS ディレクトリ構造にデプロイするGradle 用のプラグインを作成しましdeployDevた。アプリケーションとは別に構成をデプロイできるように、すべての環境の構成ファイルを別のプロジェクトに抽出しました。deployTestdeployProd

これらのカスタム タスクはアプリケーション プラグインのタスクに依存して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タスクは常に最新です。これを行う正しい方法はありますか?

4

0 に答える 0