Я сделал тест:
def value = "abc"
List<String> args = [ 'cmd', "-Dopt=${value}"];
System.out.println (args.getClass());
System.out.println (args.get(0).getClass());
System.out.println (args.get(1).getClass());
Вывод был:
class java.util.ArrayList
class java.lang.String
class org.codehaus.groovy.runtime.GStringImpl
Изменение кода немного так:
def value = "abc"
List<String> args = [ 'cmd', "-Dopt=${value}".toString()];
System.out.println (args.getClass());
System.out.println (args.get(0).getClass());
System.out.println (args.get(1).getClass());
произвело это:
class java.util.ArrayList
class java.lang.String
class java.lang.String
Нужно сделать свое дело, но я не уверен на 100%, что это лучший способ сделать это.