没有这样的属性:pom for class:Script1

时间:2016-07-14 15:08:22

标签: maven groovy

我马上就说出来了:我从未使用过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无效,传递趋势(如果有)将不可用,启用调试日志记录以获取更多详细信息

1 个答案:

答案 0 :(得分:1)

您正在访问脚本中的pom属性,该属性不是由gmaven插件提供的。在此类脚本中,您可以使用project属性,这是MavenProject的实例。

例如:

File dir = new File(project.basedir, "src/main/resources/com/cclsd/gdg/client")