exec-maven-plugin无法在编译阶段之前启动

时间:2012-11-28 11:42:07

标签: python maven maven-plugin exec-maven-plugin

我想将附加文本写入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>

任何人都知道我怎么能实现这个目的?非常感谢。

2 个答案:

答案 0 :(得分: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>内。示例代码:

    <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的工作空间配置文件中 这适用于整个工作区

答案 1 :(得分:1)

我们在

下有类似的代码生成
<execution>
    <phase>generate-sources</phase>
    <goals>
        <goal>java</goal>
    </goals>
</execution>

在插件下我们还有其他条目可以避免eclipse抱怨

        <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-sprin