根据执行的Gradle任务复制不同的文件以构建目录

时间:2013-01-16 20:43:02

标签: deployment properties zip gradle multi-tier

我已经为Gradle创建了一个插件,可以部署到我公司的OpenVMS目录结构中,添加deployDevdeployTest,并且在提供凭据时,deployProd任务到应用程序构建。我已将所有环境的配置文件解压缩到单独的项目中,以便我们可以单独从应用程序部署配置。

这些自定义任务取决于应用程序插件的distZip任务,我找不到基于被调用任务将适当的配置文件放入zip的好方法(例如deployDev包括dev config )。

我在配置阶段尝试使用deploy * tasks复制配置文件:

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,测试配置也已复制到dev资源上。

我也尝试过:

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任务始终是最新的。有没有正确的方法来做到这一点?

0 个答案:

没有答案