2011-07-02 70 views
4

我需要將一些參數傳遞給通過gmaven執行的groovy腳本。如果我直接像這樣在命令行中執行腳本,我可以做到這一點沒有問題:如何將參數傳遞給gmaven groovy:執行?

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。理想情況下,我想在插件配置中設置一些默認參數,但是當我執行命令時能夠覆蓋它們。如果可能的話,能夠將它們作爲命名參數傳遞也是非常好的。

<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

好吧,我可以回答我自己,爲了參考的問題...

而不是通過在args列表,就可以非常簡單地引用項目屬性如下:

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']!") 
+1

僅供參考,你應該從輸出目錄,而不是它們的源位置加載資源,所以更換'$ { pom.basedir}'帶''{project.build.outputDirectory}'' –

相關問題