使用带有可选JVM参数的Groovy AntBuilder()

时间:2018-06-12 18:15:31

标签: java groovy maven-plugin

我试图更新一个用groovy编写的maven插件,以便在可用的情况下使用外部JVM,否则,只需使用默认设置。我的代码更改看起来像这样:

def jvmExecutable = null;
if (someCondtion = true) {
 jvmExecutable = "something"
}

def ant = new AntBuilder()
ant.java(fork: "${fork}", jvm: "${jvmExecutable}"....)

如果jvmExecutable为null,Groovy中是否有一种方法可以省略jvm: "${jvmExecutable}"指令?如果指定jvm,Groovy Ant任务需要一个可执行文件,但如果我没有指定某些内容,我希望它能使用它的默认值。

基本上,如果jvmExecutable != null执行此操作

ant.java(fork: "${fork}", jvm: "${jvmExecutable}", ....)

jvmExecutable == null执行此操作

ant.java(fork: "${fork}", ....)

谢谢!

1 个答案:

答案 0 :(得分:1)

将命名参数传递给方法时,实际上是在构建hashmap

所以这段代码

ant.echo(message:"hello", level:"error")

等于这个

ant.echo( [message:"hello", level:"error"] )

最后,您希望仅在地图中保留有效值。像这样:

ant.echo( [message:"hello", level:null].findAll{it.value!=null} )