使用gmaven在maven中设置属性

使用gmaven在maven中设置属性,maven,groovy,gmaven-plugin,Maven,Groovy,Gmaven Plugin,我正在尝试使用gmaven覆盖maven中的以下属性: <build> <plugins> <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <

我正在尝试使用gmaven覆盖maven中的以下属性:

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>setproperty</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                        <configuration>
                            <source>
                                pom.properties['main.build.directory']=project.parent.build.directory.absolutePath.replace('\\','/');
                            </source>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

org.codehaus.gmaven
gmaven插件
setproperty
验证
执行
properties['main.build.directory']=project.parent.build.directory.absolutePath.replace('\\','/');
但我得到了这个错误:

[ERROR] Failed to execute goal org.codehaus.gmaven:gmaven-plugin:1.5:execute (setproperty) on project my-project: startup failed, script139276
2592853.groovy: 1: expecting ''', found '<EOF>' @ line 1, column 84.
[ERROR] 1 error
[ERROR]无法在项目上执行目标org.codehaus.gmaven:gmaven插件:1.5:execute(setproperty)我的项目:启动失败,脚本139276
2592853.groovy:1:应为“”,在第1行第84列找到“”。
[错误]1个错误

上面的groovy代码段出了什么问题?

我同意@khmarbaise的说法,这有点奇怪,但如果必须这样做的话……我不知道为什么它不起作用。那个插件已经不再被维护了。我认为这应该奏效:

<plugin>
  <groupId>org.codehaus.gmavenplus</groupId>
  <artifactId>gmavenplus-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <id>setproperty</id>
      <phase>validate</phase>
      <goals>
        <goal>execute</goal>
      </goals>
      <configuration>
        <scripts>
          <script><![CDATA[project.properties['main.build.directory']=project.parent.build.directory.replace('\\','/')]]></script>
        </scripts>
      </configuration>
    </execution>
  </executions>
</plugin>

org.codehaus.gmavenplus
.

. 但是,请注意,我相信这将在插件中确定范围。

使用gmavenplus插件设置的属性值在使用插件访问时正确显示。即使使用同一插件的不同实例访问,它也会正确显示。
当插件更改已在插件外部初始化的属性的值,并在插件外部访问该属性时,就会出现问题。现在属性的值不是插件更新的值。更新后的值现在在插件范围内。如果属性必须由插件更新并且需要在插件范围外访问,则作为解决此问题的一种解决方法:不要声明或初始化它,如果需要,则通过插件声明和初始化属性。

为什么需要更改main.build.directory并使用project.parent?可以再详细说明一下…这是构建转换中临时步骤的一部分-一些旧的遗留代码稍后将被删除。但是现在我们需要操作我想添加的内置属性。线索是实例和继承:pom是从gmaven插件中看到的父级。它只支持@Aditya所描述的新属性。但对于另一个实例,比如不同的插件,您可以覆盖并使用现有属性。例如,在同一pom中定义的maven站点插件中,可以先覆盖gmaven脚本中的属性,然后将其与site.xml中的新值一起使用。