Eclipse Helios + maven m2e + Groovy == 失败

6
自从我安装了新的m2e插件后,我的Groovy项目不再构建。我正在使用groovy-compiler-plugin,其描述在这里。我得到了旧的“plugin execution not covered…”错误,用于maven-compiler-plugin。我尝试了错误中描述的“testCompile”和“compile”的execute和ignore两个goals。
由于一些神秘的编译问题,我无法使用GMaven。另外,由于公司的构建过程,我也被锁定在Maven 2.2.1上。旧的m2eclipse插件已经消失了,而且m2e的文档很差。
我对此感到十分绝望。我再也没有看到过这个问题了。如果我不能很快找到解决方案,我要么放弃maven转向一些被黑客攻击的Gradle实现(尽管我也无法使用它),要么转向NetBeans,这并不是一个赢家的选择。
如请求所示,pom片段如下。
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>build-helper-maven-plugin</artifactId>
      <version>1.5</version>
      <executions>
        <execution>
          <id>add-source</id>
          <phase>generate-sources</phase>
          <goals>
            <goal>add-source</goal>
          </goals>
          <configuration>
            <sources>
              <source>src/main/groovy</source>
            </sources> 
          </configuration>
        </execution>
        <execution>
          <id>add-test-source</id>
          <phase>generate-test-sources</phase>
          <goals>
            <goal>add-test-source</goal>
          </goals>
          <configuration>
            <sources>
              <source>src/test/groovy</source>
            </sources>
          </configuration>
        </execution>    
      </executions>
    </plugin>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.1</version>
      <configuration>
        <compilerId>groovy-eclipse-compiler</compilerId>
        <verbose>true</verbose>
        <source>1.6</source>
        <target>1.6</target>
      </configuration>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.groovy</groupId>
          <artifactId>groovy-eclipse-batch</artifactId>
          <version>1.8.0-03</version>
        </dependency>        
        <dependency>
          <groupId>org.codehaus.groovy</groupId>
          <artifactId>groovy-eclipse-compiler</artifactId>
          <version>2.5.1</version>
          <exclusions>
            <exclusion>
              <groupId>org.codehaus.groovy</groupId>
              <artifactId>groovy-eclipse-batch</artifactId>
            </exclusion>
          </exclusions>
        </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.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
              <versionRange>[2.3.1,)</versionRange>
              <goals>
                    <goal>testCompile</goal>
                    <goal>compile</goal>
                  </goals>
                </pluginExecutionFilter>
                <action>
                  <execute />
                </action>
              </pluginExecution>
              <pluginExecution>
                <pluginExecutionFilter>
                  <groupId>org.codehaus.groovy</groupId>
                  <artifactId>groovy-eclipse-compiler</artifactId>
                  <versionRange>[2.5.1,)</versionRange>
                  <goals>
                    <goal>testCompile</goal>
                    <goal>compile</goal>
                  </goals>
                </pluginExecutionFilter>
                <action>
                  <execute />
                </action>
              </pluginExecution>
            </pluginExecutions>
          </lifecycleMappingMetadata>
        </configuration>
      </plugin>
    </plugins>
  </pluginManagement>  
</build>

1
你能发布你的pom文件吗?或者至少包含m2eclipse生命周期映射的部分吗? - Matthew Farwell
1
m2eclipse的存档版本可在http://m2eclipse.sonatype.org/archived-releases.html找到。 - Raghuram
发布了POM代码片段。由于格式问题可能会有轻微的拼写错误,但大部分内容都是正确的。同时我将尝试使用存档的插件。谢谢。 - Spencer Kormos
@Spencer K,我现在提供了一个更新,这也是Groovy Maven集成所需的。这是根据链接中的文档 -> http://docs.codehaus.org/display/GROOVY/Groovy-Eclipse+compiler+plugin+for+Maven - Abe
2个回答

8

首先,您必须安装正确的配置器。我假设您使用的是m2e版本1.0。如果是这种情况,则必须安装适用于m2e的Groovy-Eclipse配置器的更新版本。在此更新站点:

http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.6/

(do not use the groovy-m2eclipse-new update site. It is outdated and will go away soon.)
我不建议使用groovy-m2eclipse-new更新站点,因为它已经过时并将很快消失。
我没有在Eclipse 3.6上进行广泛的配置器测试,但它应该可以工作。我建议您升级到Eclipse Indigo,因为在Indigo上通常会更好地工作。
其次,您需要修复pom.xml文件。删除对org.eclipse.m2e插件的引用。

最初的结果似乎是积极的。我将重新安装3.7,并重试这些步骤。如果我能够直接让它工作,我会标记这个为解决方案。感谢迄今为止的帮助。希望你能在某个博客上发布这个! - Spencer Kormos
感谢Andrew,这解决了所有问题,但是有几点需要注意:如果使用Indigo,应该使用e3.7链接:http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.7/,并且*不要*安装“maven integration”选项(即v1.0.0)。最后但同样重要的是,您仍然需要使用“build-helper-maven-plugin”并安装其m2e连接器。 - Spencer Kormos
没错。我可以更新维基页面,使事情更加明确。http://docs.codehaus.org/display/GROOVY/Groovy-Eclipse+compiler+plugin+for+Maven - Andrew Eisenberg

1

请看我在Groovy用户组发布的链接。请注意,我使用的是Spring STS,它只是一个更好的Eclipse。我还附上了我的POM文件作为测试套件供您参考,请仔细注意sourceincludes元素。我也曾经尝试过很多方法来解决这个问题,但现在它肯定可以工作了。另外,请确保Eclipse中的Maven指向您安装在计算机上的相同版本,否则可能会出现问题。

[更新] 还要根据您的Eclipse版本安装以下任一插件以提供Groovy-Maven集成http://dist.codehaus.org/groovy/distributions/greclipse/groovy-m2eclipse-new/http://dist.codehaus.org/groovy/distributions/greclipse/groovy-m2eclipse/

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.org</groupId>
<artifactId>test-suite</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>test-suite</name>
<url>http://maven.apache.org</url>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<repositories>
    <repository>
        <id>jetlang.googlecode.com</id>
        <name>Jetlang Repository for Maven</name>
        <url>http://jetlang.googlecode.com/svn/repo/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.1.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-core</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-support</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>3.0.5.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jetlang</groupId>
        <artifactId>jetlang</artifactId>
        <version>0.2.5</version>
    </dependency>
    <!-- Database pool -->
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>
    <!-- ORACLE database driver -->
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc5</artifactId>
        <version>11.2.0.1.0</version>
    </dependency>
    <dependency>
        <groupId>jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>2.7.1</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
    <!-- Groovy jar -->
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>1.8.0</version>
        <type>jar</type>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <compilerId>groovy-eclipse-compiler</compilerId>
                <compilerArgument>nowarn</compilerArgument>
                <!--<verbose>true</verbose> -->
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-compiler</artifactId>
                    <version>2.5.1-1</version>
                </dependency>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-batch</artifactId>
                    <version>1.8.0-03</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <additionalProjectnatures>
                    <projectnature>org.eclipse.jdt.groovy.core.groovyNature</projectnature>
                </additionalProjectnatures>
                <sourceIncludes>
                    <sourceInclude>**/*.groovy</sourceInclude>
                </sourceIncludes>
            </configuration>
        </plugin>
    </plugins>
</build>


请勿使用 http://dist.codehaus.org/groovy/distributions/greclipse/groovy-m2eclipse-new/ 上的版本,因为它已经过时了。相反,请使用常规快照更新站点上的版本。 - Andrew Eisenberg
你使用的m2e插件版本是哪个?如何解决与新的m2e插件和连接器相关的插件错误? - Spencer Kormos
安德鲁,你能提供具体的链接吗?有4个文档站点,似乎都不正确或者不是最新的。 - Spencer Kormos
这是包含所有信息的页面:http://docs.codehaus.org/display/GROOVY/Groovy-Eclipse+compiler+plugin+for+Maven - Andrew Eisenberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接