2011-07-02 4 views
4

gmaven을 통해 실행되는 그루비 스크립트에 일부 args를 전달해야합니다.gmaven groovy에 args를 전달하는 방법은 무엇입니까?

printArgs.groovy

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

명령 ...

$groovy printArgs.groovy fe fi fo fum 

출력 ... ... : 나는 그래서 같은 명령 줄에서 직접 스크립트를 실행하면 나는이 문제를 할 수 없다

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

mvn groovy : execute를 사용하여 플러그인을 통해이 args를 전달하는 방법을 볼 수 없습니다. 이상적으로, 나는 플러그인 구성에서 일부 기본 매개 변수를 설정하려고하지만 명령을 실행할 때 매개 변수를 무시할 수 있어야합니다. 가능한 경우 named-args로 전달할 수 있다면 좋을 것입니다.

<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> 

플러그인 documentation은 약간 부족한 (및 구식). 나는 '속성'선택적 매개 변수가 있다는 것을 알지만,이 것이이 목적을 위해 사용되지 않는다고 생각합니다 (또는 그렇다면 작동하도록 할 수 없습니다!).

건배 :)

답변

6

좋아, 내가 참조를 위해서 내 자신의 질문에 대답 할 수 ...

오히려 인수 목록 전달에 비해, 다음과 같이 매우 간단 프로젝트 속성을 참조 할 수 있습니다 :

이렇게하면 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']!") 
+1

, 당신은 출력 디렉토리가 아닌 자신의 소스 위치에서 리소스를로드해야합니다, 그래서 {'$ 교체 pom.basedir}'와'$ {project.build.outputDirectory}' –