Gradle 不支持 JDK9 中的 --add-modules jvm 参数

neu*_*242 4 java jvm jvm-arguments gradle java-9

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

\n\n
    \n
  • 环境GRADLE_OPTS="--add-modules java.xml.bind \'-Dorg.gradle.jvmargs=--add-modules java.xml.bind\'"
  • \n
  • 环境org.gradle.jvmargs=--add-modules java.xml.bind
  • \n
  • 添加test { jvmArgs \'--add-modules java.xml.bind\' }到 build.gradle
  • \n
  • 添加tasks.withType(Test) { jvmArgs \'--add-modules java.xml.bind\' }到 build.gradle
  • \n
  • 添加tasks.withType(JavaExec) { jvmArgs \'--add-modules java.xml.bind\' }到 build.gradle
  • \n
\n\n

测试仍然失败。我缺少什么?

\n\n

我在https://github.com/henrik242/gradle-jdk9-test-problem中有一个示例项目

\n\n
\xe2\x9c\xa8  ./gradlew build\n:compileJava\n/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:1: error: package javax.xml.bind does not exist\nimport javax.xml.bind.ValidationException;\n                     ^\n/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:5: error: cannot find symbol\n  public void doStuff() throws ValidationException {\n                               ^\n  symbol:   class ValidationException\n  location: class SomeClass\n/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:6: error: cannot find symbol\n    throw new ValidationException("msg");\n              ^\n  symbol:   class ValidationException\n  location: class SomeClass\n3 errors\n:compileJava FAILED\n
Run Code Online (Sandbox Code Playgroud)\n

neu*_*242 6

将以下内容添加到 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"]
}
Run Code Online (Sandbox Code Playgroud)

有更容易的方法吗?

编辑:这也有效:

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

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