Groovy-Eclipse compiler plugin for Maven

Groovy-Eclipse provides a compiler plugin for Maven. Using the compiler plugin, it is possible to compile your maven projects using the Groovy-Eclipse compiler.

The most recent version of the Groovy-Eclipse-Compiler plugin for maven is 2.6.0-01.

If necessary, 2.6.1-01-SNAPSHOT versions will be available from *http://nexus.codehaus.org/snapshots/*.

How to use the compiler plugin---Setting up the POM

In your plugin section, you must change the compiler used by the maven-compiler-plugin. Like the javac ant task, the maven-compiler-plugin does not actually compile, but rather delegates the compilation to a different artifact (in our case, the groovy-eclipse-batch artifact):

t;build>
...
<plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <compilerId>groovy-eclipse-compiler</compilerId>
      <verbose>true</verbose>
    </configuration>
    <dependencies>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-eclipse-compiler</artifactId>
        <version>2.6.0-01</version>
      </dependency>
    </dependencies>
  </plugin>
  ...
</plugins>
</build>

By default, this will use Groovy 1.8.4 to compile your code. If you would prefer to use 1.7.10, then add another dependency to the maven-compiler-plugin:

t;dependency>
  <groupId>org.codehaus.groovy</groupId>
  <artifactId>groovy-eclipse-batch</artifactId>
  <version>1.7.10-06</version>
</dependency>

This will allow Groovy files to be compiled. The groovy-eclipse-compiler recognizes all settings supported by the maven-compiler-plugin.

Note that the groovy-eclipse-compiler and groovy-eclipse-batch artifacts are available in Maven-central, so there is no need to explicitly declare any extra repositories.

Setting up the source folders

There are several ways to set up your maven project to recognize Groovy source files

Do nothing

The simplest way to set up your source folders is to do nothing at all: add all of your Groovy files to src/main/java and src/test/java. This requires absolutely no extra configuration and is easy to implement. However, this is not a standard maven approach to setting up your project. If you require a more standard maven approach, then it is possible to put your Groovy files in src/main/groovy and src/test/groovy and you Java files in src/main/java and src/test/java. There are several ways of doing this.

Do almost nothing

If there is at least one file (Java or not) in src/main/java, then all files in src/main/groovy will be found. If, however, src/main/java is empty, then src/main/groovy will be ignored. You can get around this by placing an empty file in src/main/java just so that src/main/groovy will be recognized. The same is true for src/test/java and src/test/groovy. This is actually a workaround for GRECLIPSE-1221.

Use the groovy-eclipse-compiler mojo for configuring source folders

(You only need this approach if your project has an empty src/main/java or src/test/java.)

If your project has no Java files and you don't want to add an empty file in src/main/java, then you can configure source files by referencing the groovy-eclipse-compiler mojo. Just add this to the plugins section of your pom:

t;build>
  ...
  <plugin>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-eclipse-compiler</artifactId>
    <version>2.6.0-01-SNAPSHOT</version>
    <extensions>true</extensions>
  </plugin>
  ...
</build>

The <extensions>true</extensions> section is important because this redefines the default lifecycle of your project so that an extra phase is added. This phase has an extra goal attached to it that adds the two Groovy source folders.

Use the build-helper-maven-plugin

(You only need this approach if your project has an empty src/main/java or src/test/java.)

The build-helper-maven-plugin allows you to do things like adding extra source folders to your project without needing to redefine the default lifecycle. You need to add this configuration to your build plugin section:

t;build>
  ...
  <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>
  ...
</build>

The benefit of using this approach is that you do not need to make any changes to the default lifecycle. The downside is, of course, that you need 31 lines of configuration to do this!

Sample project and source code

There is an archetype available for this project. You can use it through a command like this:

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

A sample project using the compiler plugin as well as the source code for the plugin itself are available from the Codehaus.org subversion repository:

The SVN repository URL is:

https://svn.codehaus.org/groovy/eclipse/trunk/extras

There are several projects in the repository:

  • groovy-eclipse-compiler : the compiler plugin itself (an m2eclipse project).
  • groovy-eclipse-batch-builder : a set of ant scripts and configuration files used to build the groovy-eclipse-batch artifact. This artifact is an amalgamation of all jars required for compiling Groovy and Java code in Eclipse, including ecj (the Eclipse compiler for Java), the non-UI components of Groovy-Eclipse, the Groovy jars, and various required Eclipse bundles.
  • groovy-eclipse-maven-tests : a sample project that uses the compiler plugin (an m2eclipse project).
  • org.codehaus.groovy.m2eclipse : an Eclipse plugin that provides integration between Groovy-Eclipse and m2eclipse (the Maven tooling for Eclipse).
  • Feature org.codehaus.groovy.m2eclipse : an Eclipse feature that is required for building and releasing the org.codehaus.groovy.m2eclipse plugin.

The sample project and archetype is not maintained as well as we would like. Some community help with this would be greatly appreciated. Please see GRECLIPSE-1285.

Why another Groovy compiler for Maven? What about GMaven?

There are several benefits that the compiler plugin provides over GMaven, but at the same time it has a few limitations. First, the benefits:

  1. The compiler plugin does not require the creation of Java stubs so that your Groovy files can compile against Java files. This will prevent some arcane compile errors from appearing.
  2. The Groovy-Eclipse compiler is the same inside Eclipse and inside Maven, and so configuration across the two platforms can be simplified.
  3. The compiler plugin is a standard compiler plugin for Maven. It therefore follows all allows all the same standard configuration that the Javac compiler plugin uses. This makes it simpler to introduce Groovy into an existing Maven project. All you need to do is change the compiler plugin that the pom references.

There are some limitations:

  1. GroovyDoc tool is not supported because the compiler plugin does not produce stubs.
  2. Groovy Mojos are not supported.
  3. Groovy scripts cannot be executed in your poms.
  4. Groovy compiler options are not passed through to the compiler.
  5. The defaultScriptExtension compiler option is not supported.

Whether or not the Groovy-Eclipse compiler plugin for Maven is appropriate for your project will depend on your requirements.

Project Lombok

Project Lombok is compatible with the groovy-eclipse-compiler. There is some extra configuration that you need to do. The lombok jar needs to be added to both the build and compile dependencies sections:

t;dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>0.10.4</version>
</dependency>

Also, the following configuration needs to be added to the maven-compiler-plugin configuration:

t;configuration>
  <compilerId>groovy-eclipse-compiler</compilerId>
  <verbose>true</verbose>
  <compilerArguments>
    <javaAgentClass>lombok.core.Agent</javaAgentClass>
  </compilerArguments>
  <fork>true</fork>
</configuration>

Groovy-Eclipse configurator for m2Eclipse

If you are going to be working with your maven project inside of Eclipse, it is strongly recommended that you use m2eclipse. And to use your Groovy projects with m2eclipse, you will need to install the Groovy-Eclipse configurator for m2eclipse. This feature is available any of the Groovy-Eclipse update sites (e.g., nightly, milestone, or release). Just go to your Eclipse update manager and add the Groovy-Eclipse update sites (if you haven't done so already). Select the Groovy-Eclipse M2E integration.

Release update site for Eclipse 3.7:

http://dist.springsource.org/release/GRECLIPSE/e3.7/

and 3.6:

http://dist.springsource.org/release/GRECLIPSE/e3.6/

Nightly update site for Eclipse 3.7:

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

and 3.6:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个警告是由于在您的应用程序中使用了不受支持的反射操作所导致的。这可能是由于使用了旧版本的库或框架,或者由于代码中使用了不推荐的功能。 要解决这个警告,您可以尝试以下几种方法: 1. 更新您的应用程序中使用的库和框架,确保使用最新版本的软件包。 2. 检查您的代码,查找是否有使用反射操作的地方,并尝试使用更安全的替代方法。 3. 如果您使用的是Groovy语言,请确保您使用的是最新版本的Groovy,并检查是否有任何过时的功能或用法。 4. 如果您无法解决这个警告,您可以通过在启动应用程序时添加以下参数来禁用警告: - 在命令行中运行应用程序时,可以使用`--illegal-access=deny`参数。 - 如果是在Maven项目中,可以在`pom.xml`文件中的`<build>`部分添加以下配置: ```xml <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <compilerArgs> <arg>--illegal-access=deny</arg> </compilerArgs> </configuration> </plugin> </plugins> ``` - 如果是在Gradle项目中,可以在`build.gradle`文件中的`tasks.withType(JavaCompile)`部分添加以下配置: ```gradle tasks.withType(JavaCompile) { options.compilerArgs << "--illegal-access=deny" } ``` 请注意,禁用警告可能会导致某些功能无法正常工作,因此最好的解决方法是更新代码和依赖项以避免使用不受支持的反射操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值