Gradle:如何在调用任务之前参数化/配置变量?

时间:2015-03-26 06:27:28

标签: gradle

我尝试调用在调用之前更改变量的deployLocal,看起来在调用的任务中应用了DEPLOYMENT_HOST的值更改。以gradle方式实现此功能的最佳方法是什么?

project.ext{
    DEPLOY_HOST = ""
    LV_WEB_DEPLOY_DIR = ""
    LV_CLASS_DEPLOY_DIR = ""
    LVHOME_RESOURCES_DIR = ""
}

task deployDev(type: GradleBuild){
    doFirst{
        project.ext.DEPLOY_HOST = '\\\\DEV-WIN01/';
        project.ext.LV_WEB_DEPLOY_DIR = project.ext.DEPLOY_HOST + "lv_app_deploy_dir/"  + 'immunolims.ear/immunolims.war/'
        project.ext.LV_CLASS_DEPLOY_DIR = project.DEPLOY_HOST + "lv_app_deploy_dir/" + 'immunolims.ear/lib/'
        //project.ext.LVHOME_RESOURCES_DIR = project.DEPLOY_HOST + 'lvhome_resources_dir/immunolims'

        println "Dev project.ext.DEPLOYHOST = " + project.ext.DEPLOY_HOST
        println "web LV_WEB_DEPLOY_DIR Path : " + project.ext.LV_WEB_DEPLOY_DIR
        tasks = ['_copyWebFiles', '_copyLibFiles','_delOldLibFiles','_copyClassFiles', '_copyLabelFiles']
    }
}
task deployLocal(type: GradleBuild){
    doFirst{
        project.ext.DEPLOY_HOST = '\\\\localhost/';
        println "Dev project.ext.DEPLOYHOST = " + project.ext.DEPLOY_HOST
        project.ext.LV_WEB_DEPLOY_DIR = project.ext.DEPLOY_HOST + "lv_app_deploy_dir/"  + 'immunolims.ear/immunolims.war/'
        println "web LV_WEB_DEPLOY_DIR Path : " + project.ext.LV_WEB_DEPLOY_DIR
        project.ext.LV_CLASS_DEPLOY_DIR = project.DEPLOY_HOST + "lv_app_deploy_dir/" + 'immunolims.ear/lib/'
        project.ext.LVHOME_RESOURCES_DIR = project.DEPLOY_HOST + 'lvhome_resources_dir/immunolims'
        tasks = [ '_copyLibFiles','_delOldLibFiles','_copyWebFiles','_copyClassFiles', '_copyLabelFiles']
    }
}

task _copyWebFiles(type: Copy) {
    from 'war'
    into {project.ext.LV_WEB_DEPLOY_DIR }
}

task _copyClassFiles(type: Copy) {
    from 'bin'
    into {project.ext.LV_CLASS_DEPLOY_DIR }
}

task _copyLibFiles(type: Copy) {
    from 'lv_server_setup_files/immunolims.ear_lib'
    into {project.ext.LV_CLASS_DEPLOY_DIR }
}
task _copyLabelFiles(type: Copy) {
   from 'lv_server_setup_files/lvhome70_applications_immunolims'
   into {project.ext.LVHOME_RESOURCES_DIR }
}

1 个答案:

答案 0 :(得分:0)

您在项目评估时配置project.ext.DEPLOY_HOST,因为您在任务配置中设置了它。您应该在运行任务时进行设置。您应该将其作为操作而不是配置添加到任务中。

task deployLocal(type: GradleBuild){
   doFirst{
      project.ext.DEPLOY_HOST = '\\\\localhost/';
      println "project.DEPLOYHOST = " + project.DEPLOY_HOST
      tasks = ['_copyWebFiles', '_copyClassFiles', '_copyLabelFiles']
   }
   doLast{
     //some other action
   }
}

或只是

task deployLocal(type: GradleBuild) << {
  //some action as doLast
}

看这里gradle task