Как передать аргументы в gmaven groovy: execute? - PullRequest
4 голосов
/ 02 июля 2011

Мне нужно передать некоторые аргументы в groovy скрипт, который выполняется через gmaven.Я могу сделать это без проблем, если я выполню сценарий непосредственно в командной строке следующим образом:

printArgs.groovy ...

for (a in this.args) {
  println("Argument: " + a)
}

command ...

$groovy printArgs.groovy fe fi fo fum 

output ...

Argument: fee
Argument: fi
Argument: fo
Argument: fum

Я не вижу, как передать эти аргументы через плагин, хотя с помощью mvn groovy: execute.В идеале я хочу установить некоторые параметры по умолчанию в конфигурации плагина, но иметь возможность переопределить их, когда я выполню команду.Было бы неплохо иметь возможность передавать их как именованные аргументы, если это возможно.

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.3</version>
    <configuration>
        <source>${pom.basedir}/src/main/resources/printArgs.groovy</source>
    </configuration>
</plugin>

Плагин документация немного скуден (и также устарел).Я вижу, что есть необязательный параметр 'properties', но я не думаю, что он должен использоваться для этой цели (или, если это так, я не могу заставить его работать!).

Приветствия:)

1 Ответ

6 голосов
/ 04 июля 2011

Хорошо, я могу ответить на свой вопрос для справки ...

Вместо того, чтобы передавать список аргументов, можно очень просто ссылаться на свойства проекта следующим образом:

def someProp = project.properties['someProp']

При этом вы можете ссылаться на любые свойства, определенные в теге в pom.Кроме того, вы можете определить свойства в том же теге конфигурации, что и скрипт groovy.

Конфигурация плагина Gmaven ...

<configuration>
    <properties>
        <name>world</name>
    </properties>
    <source>${pom.basedir}/src/main/resources/bootstrap/helloWorld.groovy</source>
</configuration>

HelloWorld.groovy ...

println("Hello $project.properties.name!")
// this also works
// println("Hello $project.properties['name']!")
...