1

我想将附加文本写入 Java 资源文件(将两个 .java 文件合并为一个)。我为此编写了一个 python 脚本。

我还想使用 Maven 自动化这些步骤(组合文件、编译、打包)。我是 Maven 的新手,我发现它exec-maven-plugin可以运行 python 脚本。

我尝试设置<phase>process-resources</phase>为在编译之前尝试使其启动,但 Eclipse 抱怨说Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (execution: default, phase: process-resources)

下面是我的 exec-maven-plugin 的 pom:

  <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
            <execution>
                <phase>process-resources</phase> <!-- Eclipse complains an error here -->
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <executable>python</executable>
            <workingDirectory>src/main/python</workingDirectory>
            <arguments>
                <argument>combine.py</argument>
            </arguments> 
        </configuration>
    </plugin>

任何人都知道我该如何实现这个目的?非常感谢。

4

2 回答 2

3

这是 Eclipse M2e 插件技巧。Sachin Shekhar R是对的,但是对于像我这样的新手来说,答案还不够清楚。这是我的理解:

请参阅http://wiki.eclipse.org/M2E_plugin_execution_not_covered
在 Eclipse M2e 中有两种方法可以做到这一点。

  1. Sachin Shekhar R使用答案中列出的代码。请注意,这段代码必须在<pluginManagement><plugins>并且<pluginManagement>必须在里面<plugins>。示例代码:</p>

    <build>
    <plugins>
                <plugin>
                   <!-- plugins here-->
                </plugin>
    </plugins>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>exec-maven-plugin</artifactId>
                                    <versionRange>[1.2.1,)</versionRange>
                                    <goals>
                                        <goal>exec</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore/>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    </build>
    

    这仅适用于项目。

  2. 使用 Eclipse M2e 插件的“快速修复”功能。它存在于 1.0 版本之后。Problems在选项卡中找到错误。右键单击它,选择“快速修复”。会弹出一个快速修复窗口,选择第二个选项Mark goal exec as ignored in Eclipse build in Eclipse references (experimental)
    此方法会将上述代码写入<lifecycleMappingMetadata>到生命周期映射的工作区配置文件中,workspace/.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml
    这适用于整个工作区

于 2012-11-29T07:30:15.377 回答
1

我们有类似的代码生成下

<execution>
    <phase>generate-sources</phase>
    <goals>
        <goal>java</goal>
    </goals>
</execution>

在插件下,我们还有额外的条目以避免日食抱怨

        <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        org.codehaus.mojo
                                    </groupId>
                                    <artifactId>
                                        exec-maven-plugin
                                    </artifactId>
                                    <versionRange>
                                        [1.2.1,)
                                    </versionRange>
                                    <goals>
                                        <goal>java</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution></pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>

来自 GWT 源代码的用于生命周期映射的实时示例 -http://code.google.com/searchframe#T04cSGC7sWI/trunk/samples/expenses/pom.xml

参考说明 - stackoverflow.com/questions/6352208/how-to-solve-plugin-execution-not-covered-by-lifecycle-configuration-for-srin

于 2012-11-28T11:50:09.440 回答