Java9 представляет Multi-Release JAR.
Скажем, что у меня есть многомодульный проект Gradle с использованием java8:
project-root
settings.gradle
build.gradle
/module1
/src
... (common maven structure)
/module2
/module3
Это общий многомодульный проект в Gradle. Скажем, мне нужен MR-Jar для module1
.
Я не могу добавить module1-java9
таргетинг на Java9, потому что база находится на 8 - до сих пор, как мои Gradle, так и IntelliJ IDEA жалуются. Gradle скомпилирован с java8, но мне нужно включить java9 runtime только для модуля (не знаю, как); в IntelliJ IDEA я могу установить время выполнения java9 для модуля, но он перезаписывается каждый раз при перезагрузке Gradle.
Кроме того, даже если я его каким-то образом добавлю, мне нужно проинструктировать module1
1) построить второй и 2) включить module1-java9
. Вот пример этой ситуации:
project-root
settings.gradle
build.gradle
/module1
/module1-java9 (added java9 module)
/module2
...
В качестве альтернативы это можно сделать в module1
, имеющем разные источники: src
и src-java9
. но я сомневаюсь, что это когда-нибудь будет принято. Вот чертеж:
project-root
settings.gradle
build.gradle
/module1
/src
/src-java9 (added java9 source folder)
/module2
/module3
До сих пор я вижу только, что module1-java9
является отдельным проектом (а не модулем) и что module1
просто вызывает Gradle там и выводит результат. Да, это Gradle вызов Gradle:)))
Есть ли какой-нибудь удобный для разработчиков способ?