6

我试图了解 Maven 中 Java 和 Groovy 项目的正确设置,使用 groovy-eclipse-compiler 编译源文件。

根据插件站点,如果您有文件,src/main/java编译src/test/java器默认应该同时找到 Java 和 Groovy。

设置build类似于示例的内容为target/classes空。

<build>
...
<plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <compilerId>groovy-eclipse-compiler</compilerId>
      <!-- set verbose to be true if you want lots of uninteresting messages -->
      <!-- <verbose>true</verbose> -->
    </configuration>
    <dependencies>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-eclipse-compiler</artifactId>
        <version>2.7.0-01</version>
      </dependency>
    </dependencies>
  </plugin>
  ...
</plugins>
</build>

我发现让它工作的唯一方法是使用build-helper-maven-plugin. 这也是 Archetype 使用的选项:

mvn archetype:generate \
    -DarchetypeGroupId=org.codehaus.groovy \
    -DarchetypeArtifactId=groovy-eclipse-quickstart \
    -DarchetypeVersion=2.5.2-SNAPSHOT \
    -DgroupId=foo \
    -DartifactId=bar \
    -Dversion=1 \
    -DinteractiveMode=false \
    -DarchetypeRepository=https://nexus.codehaus.org/content/repositories/snapshots/

那么,是页面过时了吗?src 文件夹中的 Java 文件还不够吗?

4

1 回答 1

6

我能让这个工作。这是我所做的:

  1. 像上面那样创建原型。
  2. 将 pom.xml 编辑到下面的文件中
  3. mv 从 src/main/groovy 到 src/main/java 的所有内容,对于测试也是如此。
  4. 删除空的 groovy 目录
  5. 将所有 *.java 文件重命名为 *.groovy
  6. mvn 清理编译
  7. 由于 Java 与 groovy 语法的差异,我得到了一些预期的编译错误,但所有 groovy 文件都被识别。

这对你有用吗?如果不是有什么不同?

这是我正在使用的 pom 文件:

<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>foo</groupId>
  <artifactId>bar</artifactId>
  <version>1</version>
  <name>bar Groovy Eclipse Maven Java App</name>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <compilerId>groovy-eclipse-compiler</compilerId>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-eclipse-compiler</artifactId>
            <version>2.7.0-01</version>
            <exclusions>
              <exclusion>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-eclipse-batch</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-eclipse-batch</artifactId>
            <version>2.1.1-01</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.1.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

编辑

由于我误解了实际问题,并且您确实希望将文件分开,因此有两种选择:

  1. 像你一样使用 build-helper-plugin
  2. 使用 groovy-eclipse-compiler mojo:

  <plugin>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-eclipse-compiler</artifactId>
    <version>2.7.0-01</version>
    <extensions>true</extensions>
  </plugin>

</build>

这一切都在groovy-eclipse-compiler页面上进行了描述。

于 2013-05-08T16:03:29.747 回答