gmaven 插件:如何在 pom.xml 中为外部 groovy 脚本设置 属性

gmaven plugin: how to set property in pom.xml for external groovy script

我是 运行 通过 pom.xml 中的 gmaven 插件的外部 groovy 脚本。 外部脚本是 'myscript.groovy'.

我想通过 maven pom.xml [即 parameters/arguments 向 myscript.groovy 提供一些 parameters/arguments在插件内部 'gmaven-plugin' 执行];但无法这样做..

我试过使用 in ;但不确定如何在 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' 属性 的值。

这方面的任何提示都会有用..谢谢

您可以通过两种方式绑定和检索属性。一种是通过插件特定的属性。

<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

一样将其包含在您的通话中

另一个选项是直接绑定到项目级属性。你会把它放在你的项目级属性或你的调用中,就像上面提到的那样,并且不要在插件 <configuration> 中包含 <properties>。如果你走这条路,你将通过 project.properties['installation.dir'] 在你的脚本中访问 GMaven 或 GMavenPlus(在这种情况下也为 GMavenPlus 取出 <bindPropertiesToSeparateVariables>)。

如果这对您不起作用,请尝试将 installation.dir 重命名为 installationDir。我不记得月经是否有问题。