我正在尝试使用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>
但是我收到了这个错误:;
[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
上面的groovy片段有什么问题?
答案 0 :(得分:3)
使用插件访问时,使用gmavenplus-plugin设置的属性值正确显示。即使使用同一插件的不同实例访问它,它也会正确显示。 当插件改变已经在插件外部初始化的属性的值并且在插件外部访问它时,会出现问题。现在,属性的值不是插件更新的值。更新后的值现在作用于插件中。作为解决此问题的解决方法,如果必须通过插件更新属性并且需要在插件范围之外访问它:不要声明或初始化它,以防它需要然后通过声明声明并初始化属性插件。
答案 1 :(得分:1)
我同意@khmarbaise的说法,这有点奇怪,但如果你必须......我不确定为什么它不起作用。该插件不再真正维护。 &lt; shamelessPlug&gt;我认为这应该有效:
<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>
有关此mojo的更多信息,请查看http://groovy.github.io/GMavenPlus/execute-mojo.html。 &LT; / shamelessPlug取代。但请注意,我相信这将在插件中确定范围。