В GitHub есть пример проекта gradle , который компилирует Java и Groovy и использует Java из Groovy и наоборот.С небольшими изменениями вы можете заставить его работать в Java 11. В основном используйте это 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());
}
}
Groovy:
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
}
}
Я разветвлял проект и следовал инструкциям в по этой ссылке , чтобы он работал.Вот ветвь, которая работает в Java11 , ветвь java11 .Надеюсь, это поможет: