Gradle不尊重JDK9中的–add-modules jvm参数

我正在尝试JDK9(9-ea + 143),并且需要设置--add-modules java.xml.bind 。 我试过了:

  • 设置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中org.gradle.jvmargs=--add-modules java.xml.bind
  • 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 

将以下内容添加到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"] } 

有更容易的方法吗?

编辑:这也有效:

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