2016-11-10 9 views
3

Я пытаюсь JDK9 (9-ea + 143), и вам нужно установить --add-modules java.xml.bind. Я пробовал:Gradle не почитает аргумент jadm -add-modules в JDK9

  • Установка GRADLE_OPTS="--add-modules java.xml.bind '-Dorg.gradle.jvmargs=--add-modules java.xml.bind'"
  • Установка org.gradle.jvmargs=--add-modules java.xml.bind в gradle.properties.
  • Добавление test { jvmArgs '--add-modules java.xml.bind' } к build.gradle
  • Добавление tasks.withType(Test) { jvmArgs '--add-modules java.xml.bind' } к build.gradle
  • Добавление tasks.withType(JavaExec) { jvmArgs '--add-modules java.xml.bind' } к build.gradle

тесты по-прежнему терпят неудачу. Что мне не хватает?

У меня есть пример проект в https://github.com/henrik242/gradle-jdk9-test-problem

✨ ./gradlew build 
:compileJava 
/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:1: error: package javax.xml.bind does not exist 
import javax.xml.bind.ValidationException; 
        ^
/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:5: error: cannot find symbol 
    public void doStuff() throws ValidationException { 
          ^
    symbol: class ValidationException 
    location: class SomeClass 
/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:6: error: cannot find symbol 
    throw new ValidationException("msg"); 
      ^
    symbol: class ValidationException 
    location: class SomeClass 
3 errors 
:compileJava FAILED 

ответ

4

Он работает при добавлении следующего build.gradle:

compileJava { 
    options.compilerArgs += ["--add-modules", "java.xml.bind"] 
} 

compileTestJava { 
    options.compilerArgs += ["--add-modules", "java.xml.bind"] 
} 

test { 
    jvmArgs += ["--add-modules", "java.xml.bind"] 
} 

Есть ли более простой способ?

EDIT: Это также работает:

tasks.withType(AbstractCompile) { 
    options.compilerArgs += ["--add-modules", "java.xml.bind"] 
} 

tasks.withType(Test) { 
    jvmArgs += ["--add-modules", "java.xml.bind"] 
}