有谁知道哪个编译器/插件可以用java 11版本编译java和groovy代码吗?我试过GMavenPlus、Groovy eclipse编译器和Maven的Ant插件,但到目前为止还没有成功。
xesrikrc1#
最后,这个方法奏效了:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>11</source> <target>11</target> <release>11</release> </configuration> </plugin> <plugin> <groupId>org.codehaus.gmavenplus</groupId> <artifactId>gmavenplus-plugin</artifactId> <version>1.6.2</version> <executions> <execution> <goals> <goal>compile</goal> <goal>compileTests</goal> </goals> </execution> </executions> </plugin>
groovy.version:2.4.12
8zzbczxx2#
以下是groovy-eclipse-compiler适配器的典型POM:
groovy-eclipse-compiler
<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> <artifactId>proj-name</artifactId> <groupId>org.whatever</groupId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.fork>true</maven.compiler.fork> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding> </properties> <pluginRepositories> <pluginRepository> <id>bintray</id> <name>Groovy Bintray</name> <url>https://dl.bintray.com/groovy/maven</url> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>2.5.5</version> <classifier>indy</classifier> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <compilerId>groovy-eclipse-compiler</compilerId> <compilerArguments> <indy/> </compilerArguments> </configuration> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-compiler</artifactId> <version>3.0.0-01</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-eclipse-batch</artifactId> <version>2.5.5-01</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
它假设您有src/main/groovy、src/main/java、src/test/groovy和src/test/java。也可以有其他源文件夹配置,其中包含一些额外的XML。https://github.com/groovy/groovy-eclipse/wiki/Groovy-Eclipse-Maven-plugin
w7t8yxp53#
GitHub中有一个sample gradle project,它编译Java和Groovy,并使用来自Groovy的Java,反之亦然。只需稍加修改,就可以让它在Java 11中工作。基本上使用这个build.gradle:
build.gradle
group 'de.jonashavers' version '1.0.0' apply plugin: 'groovy' sourceSets { main { java { srcDirs = [] } groovy { srcDirs << ['src/main/java'] } } } repositories { mavenCentral() } dependencies { compile 'org.codehaus.groovy:groovy-all:2.5.7' compile 'javax.xml.bind:jaxb-api:2.3.0' compile 'com.sun.xml.bind:jaxb-core:2.3.0.1' compile 'com.sun.xml.bind:jaxb-impl:2.3.0.1' compile 'javax.activation:activation:1.1.1' testCompile group: 'junit', name: 'junit', version: '4.12' }
这必须是文件结构:
Groovy类:
package de.jonashavers.groovierjavacompilation class PlainGroovy { String language = 'groovy' static void main(String[] args) { String lang = "Groovy" println(lang) } }
Java类:
package de.jonashavers.groovierjavacompilation; class JavaExtendingGroovy extends PlainGroovy { }
测试:
** java **
package de.jonashavers.groovierjavacompilation; import org.junit.Test; import static org.junit.Assert.assertEquals; public class JavaTest { @Test public void testAccessToGroovy() { PlainGroovy plainGroovy = new PlainGroovy(); assertEquals("groovy", plainGroovy.getLanguage()); } @Test public void testAccessToGroovyFromJava() { JavaExtendingGroovy groovyFromJava = new JavaExtendingGroovy(); assertEquals("groovy", groovyFromJava.getLanguage()); } }
好极了
package de.jonashavers.groovierjavacompilation class GroovyTest extends GroovyTestCase { void testAccessToGroovy() { PlainGroovy plainGroovy = new PlainGroovy() assertEquals 'groovy', plainGroovy.language } void testAccessToGroovyFromJava() { JavaExtendingGroovy groovyFromJava = new JavaExtendingGroovy() assertEquals 'groovy', groovyFromJava.language } }
我创建了这个项目,并按照this link中的说明使其工作。下面是the fork that works in Java11,java11分支。希望这对您有所帮助:
yzxexxkh4#
将groovy升级到3.0.15版本,将maven-compiler-plugin升级到3.10.1版本,为我解决了这个问题:
groovy
3.0.15
maven-compiler-plugin
3.10.1
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <release>${maven.compiler.release}</release> </configuration> </plugin>
其中${maven.compiler.release} =您的Java版本
${maven.compiler.release}
4条答案
按热度按时间xesrikrc1#
最后,这个方法奏效了:
groovy.version:2.4.12
8zzbczxx2#
以下是
groovy-eclipse-compiler
适配器的典型POM:它假设您有src/main/groovy、src/main/java、src/test/groovy和src/test/java。也可以有其他源文件夹配置,其中包含一些额外的XML。https://github.com/groovy/groovy-eclipse/wiki/Groovy-Eclipse-Maven-plugin
w7t8yxp53#
GitHub中有一个sample gradle project,它编译Java和Groovy,并使用来自Groovy的Java,反之亦然。只需稍加修改,就可以让它在Java 11中工作。基本上使用这个
build.gradle
:这必须是文件结构:
Groovy类:
Java类:
测试:
** java **
好极了
我创建了这个项目,并按照this link中的说明使其工作。下面是the fork that works in Java11,java11分支。希望这对您有所帮助:
yzxexxkh4#
将
groovy
升级到3.0.15
版本,将maven-compiler-plugin
升级到3.10.1
版本,为我解决了这个问题:其中
${maven.compiler.release}
=您的Java版本