Плагин gmaven: как установить свойство в pom.xml для внешнего скрипта groovy
Я запускаю внешний скрипт Groovy через плагин gmaven в pom.xml. Внешний скрипт называется "myscript.groovy".
Я хочу предоставить некоторые параметры / аргументы для myscript.groovy через maven pom.xml [т.е. внутри исполнения плагина 'gmaven-plugin']; но не в состоянии сделать это..
Я пытался использовать в; но не уверен, как получить его значения в Groovy скрипте. Простой вызов properties.get не дает значения свойства.
Snap файла 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>
Не уверен, как получить значение свойства 'instal.dir' в скрипте 'configure.groovy'.
Любой намек на этот счет будет полезен.. спасибо
1 ответ
Есть два способа связать и получить свойства. Один будет через свойства, специфичные для плагина.
<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 больше не поддерживается (я был последним сопровождающим). Если вы хотите использовать версии Groovy новее, чем 2.0.0, взгляните на 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
, Я не могу вспомнить, если бы периоды были проблематичными.