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

时间:2016-11-10 15:11:10

标签: java gradle jvm jvm-arguments java-9

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

  • 设置GRADLE_OPTS="--add-modules java.xml.bind '-Dorg.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

1 个答案:

答案 0 :(得分: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"]
}

有更简单的方法吗?

编辑:这也有效:

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

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