2015-05-05 4 views
3

Я запускаю внешний groovy-скрипт через плагин gmaven в pom.xml. Внешний скрипт говорит «myscript.groovy».gmaven plugin: как установить свойство в pom.xml для внешнего скрипта groovy

Я хочу предоставить некоторые параметры/аргументы myscript.groovy через maven pom.xml [i.e. внутри выполнения плагина 'gmaven-plugin']; но не удалось это сделать.

Я пробовал использовать; но не уверен, как получить его значения в groovy-скрипте. Просто вызов свойства.get не дает значения свойства.

хруст п файла:

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

Не знаю, как получить значение свойства «installation.dir» в «» configure.groovy сценария.

Любой намек в этом отношении будет полезным .. спасибо

+0

Без п файла и как вы называете заводной сценарий это невозможное, чтобы сказать, что это неправильно и т.д. – khmarbaise

+0

привет khmarbaise .. Я добавил выборочный П оснастку для gmaven плагина используются .. – javdev

ответ

4

Есть два способа связать и получить свойство. Один из них будет связан с определенными плагинами свойствами.

<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. Я не могу вспомнить, если периоды были проблематичными.

+0

Hello Кигана, спасибо за ответ I Плагин был таким, как вы уже упоминали выше. Так что включили свойства на уровне проекта, а не в конфигурацию плагина. Но в groovy скрипте, когда я пытаюсь получить project.properties ['installation.dir'], тогда переменная «project» неизвестна сценарию. Я что-то пропустил здесь? – javdev

+0

Нет, но я просто понял, что GMaven нуждается в проекте.properties', даже если свойства не связаны на уровне проекта. Я отредактировал ответ, чтобы это отразить. Для вашей проблемы, если вы используете на уровне плагина, вам нужно использовать 'properties ['installation.dir']' для GMavenPlus. – Keegan

+0

К сожалению, вы используете на уровне проекта, поэтому первая версия моего комментария была правильной ... Для вашей проблемы кажется, что вы используете GMavenPlus с ' fasle'. Удалите эту строку, и она должна работать. – Keegan

 Смежные вопросы

  • Нет связанных вопросов^_^