仅在调用任务时从任务设置变量

时间:2015-03-30 11:18:51

标签: gradle spring-boot

我已经定义了一个名为debug的任务,它应该设置应用程序插件的applicationDefaultJvmArgs,以便spring-boot停止并等待调试器。

我想将此任务与我定义的另一个名为local的任务结合使用,该任务设置了一个spring.profiles.active变量。

apply plugin: 'spring-boot'
apply plugin: 'application'
apply plugin: 'org.flywaydb.flyway'

dependencies {
    compile group: "org.apache.camel", name: "camel-netty4-http", version: camelVersion
    compile group: "org.apache.camel", name: "camel-spring-boot", version: camelVersion
    compile group: "org.springframework.boot", name: "spring-boot-starter", version: "1.2.1.RELEASE"
}

flyway {
    url = 'jdbc:mysql://localhost:3306/foobar'
    user = 'foo'
    password = 'bar'
}

task local {
    tasks.withType(org.springframework.boot.gradle.run.BootRunTask) {
        systemProperty('spring.profiles.active', 'local')
    }
}

task debug << {
    project.ext {
        applicationDefaultJvmArgs = [
                "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
        ]
    }
}

当我使用gradle local debug调用gradle时,设置了applicationDefaultJvmArgs但是当我调用gralde local时它们也被设置了吗?

我尝试过

task debug << { ... 

但这不会产生任何影响。

1 个答案:

答案 0 :(得分:0)

applicationDefaultJvmArgs在哪里定义?你能为你的构建脚本提供完整的代码吗? 我相信下一段代码应该可以完成这项工作:

task debug << {
    project.ext {
        applicationDefaultJvmArgs = [
            "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"    
        ]
    }
}

变化:

  1. 将applicationDefaultJvmArgs指定为调试任务操作的一部分(而不是配置)
  2. 将applicationDefaultJvmArgs定义为项目属性