代码之家  ›  专栏  ›  技术社区  ›  Jonathan S. Fisher

将groovy antbuilder()与可选的jvm参数一起使用

  •  0
  • Jonathan S. Fisher  · 技术社区  · 7 年前

    我正在尝试更新一个用groovy编写的maven插件,以便在外部jvm可用时使用它,否则,只需使用默认值。我的代码更改如下:

    def jvmExecutable = null;
    if (someCondtion = true) {
     jvmExecutable = "something"
    }
    
    def ant = new AntBuilder()
    ant.java(fork: "${fork}", jvm: "${jvmExecutable}"....)
    

    在Groovy中有没有一种方法可以去掉 jvm: "${jvmExecutable}" 指令如果jvmexecutable为空?groovy ant任务需要一个可执行文件,如果 jvm 是指定的,但如果我不指定某些内容,我希望它使用默认值。

    基本上,如果 jvmExecutable != null 这样做

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

    或如果 jvmExecutable == null 这样做

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

    谢谢您!

    1 回复  |  直到 7 年前
        1
  •  1
  •   daggett    7 年前

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

    所以这个代码

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

    相当于这个

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

    最后,您只想在映射中保留有效值。这样地:

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