我正在通过pom.xml中的gmaven插件运行外部groovy脚本。 外部脚本是'myscript.groovy'。
我想通过maven pom.xml为myscript.groovy提供一些参数/参数[即在插件'gmaven-plugin'执行中];但无法这样做..
我尝试过使用;但不确定如何在groovy脚本中检索其值。简单地调用properties.get不会给出属性值。
pom文件的快照:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<id>generate-resources-execute-groovyscript</id>
<phase>generate-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<properties>
<property>
<name>installation.dir</name>
<value>${installation.dir}</value>
</property>
</properties>
<source>${pom.basedir}/src/main/groovy/configure.groovy</source>
</configuration>
</execution>
</executions>
</plugin>
不确定如何在'configure.groovy'脚本中检索'installation.dir'属性的值。
这方面的任何提示都会有用..谢谢
答案 0 :(得分:6)
有两种方法可以绑定和检索属性。一种是通过插件特定的属性。
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<id>generate-resources-execute-groovyscript</id>
<phase>generate-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<properties>
<installation.dir>${installation.dir}</installation.dir>
</properties>
<source>${pom.basedir}/src/main/groovy/configure.groovy</source>
</configuration>
</execution>
</executions>
</plugin>
这些内容将在project.properties['installation.dir']
等脚本中检索。
GMaven不再维护(我是最后一位维护者)。如果您想使用比2.0.0更新的Groovy版本,请查看GMavenPlus。这是等效的POM:
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>execute</goal>
</goals>
<phase>generate-resources</phase>
</execution>
</executions>
<configuration>
<bindPropertiesToSeparateVariables>false</bindPropertiesToSeparateVariables>
<properties>
<property>
<name>installation.dir</name>
<value>${installation.dir}</value>
</property>
</properties>
<scripts>
<script>file:///${pom.basedir}/src/main/groovy/configure.groovy</script>
</scripts>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
在这种情况下,检索就像properties['installation.dir']
。我知道file:///
很烦人。我在下一个版本中删除了对此的要求。
对于GMaven或GMavenPlus,如果选择插件属性方法,则需要在项目POM中将其值设置为其他位置
<properties>
<installation.dir>C:\someDir</installation.dir>
</properties>
或者将其包含在mvn -Dinstallation.dir=C:\someDir
另一种选择是直接绑定到项目级属性。您可以将它放在项目级属性或通话中,如上所述,并且不要在插件<properties>
中包含<configuration>
。如果你走这条路线,你可以通过project.properties['installation.dir']
在你的脚本中访问GMaven或GMavenPlus(在这种情况下也取出<bindPropertiesToSeparateVariables>
GMavenPlus。)
如果这对您不起作用,请尝试将installation.dir
重命名为installationDir
。如果时间有问题,我不记得了。