【问题标题】:exec-maven-plugin cannot be started before compile phase在编译阶段之前无法启动 exec-maven-plugin
【发布时间】:2012-11-16 06:08:28
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    1. 使用Sachin Shekhar R 的答案中列出的代码。请注意,这段代码必须在&lt;pluginManagement&gt;&lt;plugins&gt; 下,&lt;pluginManagement&gt; 必须在&lt;plugins&gt; 内。示例代码:

      <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)
      此方法会将&lt;lifecycleMappingMetadata&gt; 之间的上述代码写入到生命周期映射到workspace/.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml 的工作区配置文件中
      这适用于整个工作区

    【讨论】:

      【解决方案2】:

      我们在

      下也有类似的代码生成
      <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

      【讨论】:

      • 我试过你的代码,但错误仍然存​​在。我把它们放在与 exec 插件相同的 pom.xml 文件中的 下,对吗?
      • 更新了答案,其中包含来自 GWT 源代码的示例 pom 的链接。另外,请阅读参考说明。
      • 以上代码无法处理。我从wiki.eclipse.org/M2E_plugin_execution_not_covered 阅读并发现HINT: m2e provides a quick-fix associated with "plugin execution not covered" to easily create &lt;pluginManagement/&gt; elements like above. 这对我有帮助。我会拍一些快照来回答
      • 哦,终于找到了,这个pom.xml好长。最后我知道你的代码必须添加到&lt;pluginManagement&gt;&lt;plugins&gt; 中,也就是&lt;plugins&gt; 中。如果没有,它就行不通。维基页面命名了两种方法。快速修复是添加此代码的自动方式
      • 完全正确:D。魔鬼总是存在于细节中。 GWT 文档/示例正在改进(但距离简单还有很长的路要走)
      猜你喜欢
      • 2012-09-07
      • 2018-07-09
      • 1970-01-01
      • 2014-04-23
      • 2018-03-14
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      相关资源
      最近更新 更多