我马上就说出来了:我从未使用过Maven / Groovy,但是,最近我找到了编写一个自动从.properties文件创建枚举的脚本的工作。
我使用GMavenPlus插件。我已经在回答this问题之后编写了脚本。我不能在答案中使用相同的pom的原因是因为它使用了已经停产的GMaven。
现在,当我尝试在cmd上运行它时,我得到了错误
Failed to execute goal org.codehaus.gmavenplus:gmavenplus-plugin:1.5:execute <create-enum> on project gui: Error occurred while calling a method on a Groovy class
from classpath. InvocationTargetException: No such property: pom for class: Script1 -> [Help 1]
以下是我的pom.xml的重要部分:
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>create-enum</id>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
</execution>
</executions>
<configuration>
<scripts>
<script><![CDATA[
import java.io.File
import com.cclsd.gdg.client.EnumGenerator
File dir = new File( pom.basedir,
"src/main/resources/com/cclsd/gdg/client")
new EnumGenerator(
new File( pom.build.directory,
"generated-sources/enums"),
new File(dir,
"properties/config.properties"),
new File(dir,
"EnumTemplate.txt"),
"com.cclsd.gdg.client.data",
"PropertyEnum"
)
]]></script>
</scripts>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<!-- any version of Groovy \>= 1.5.0 should work here -->
<version>2.4.7</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.codehaus.gmavenplus
</groupId>
<artifactId>
gmavenplus-plugin
</artifactId>
<versionRange>
[1.0.0,)
</versionRange>
<goals>
<goal>execute</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
注意:我从the official m2e site获得的pluginmanagement标记下的所有内容都应该导致脚本在generate-sources阶段执行
我真的需要有人在这里帮助我,我真的无法在Google上找到关于此错误的一件事。关于在maven中执行脚本的全面教程也很不错。
祝你有个美好的一天〜克劳利
编辑:它还会显示警告POM for无效,传递趋势(如果有)将不可用,启用调试日志记录以获取更多详细信息
答案 0 :(得分:1)
您正在访问脚本中的pom
属性,该属性不是由gmaven插件提供的。在此类脚本中,您可以使用project
属性,这是MavenProject的实例。
例如:
File dir = new File(project.basedir, "src/main/resources/com/cclsd/gdg/client")