Автор оригинала: Vlad Mihalcea.
Вступление
В этой статье вы узнаете, как настроить Maven для выбора конкретной версии Java, если в операционной системе установлено несколько версий Java.
Например, Flexipool использует Java 8 для всех модулей, за исключением модуля flexy-pool-core-java 9
, который необходимо создать с использованием Java 9.
Использование цепочек инструментов Maven для определения нескольких версий Java
Чтобы использовать несколько версий Java, вам необходимо использовать Цепочки инструментов Maven , которые требуют создания toolchains.xml
файл в папке ~/.m2
Maven, содержащий все версии Java, установленные на вашем компьютере:
jdk Java13 13 ${env.JAVA_HOME_13} jdk Java9 9 ${env.JAVA_HOME_9} jdk Java8 8 ${env.JAVA_HOME_8} jdk Java7 7 ${env.JAVA_HOME_7} jdk Java6 6 ${env.JAVA_HOME_6}
Переменные среды JAVA_HOME_13
, JAVA_HOME_9
, JAVA_HOME_8
, JAVA_HOME_7
, JAVA_HOME_6
настроены так, чтобы они ссылались на путь, по которому установлена соответствующая версия Java.
Родитель pom.xml Конфигурация Maven, определяющая версию Java по умолчанию
Родитель pom.xml
Файл конфигурации Maven определяет глобальные параметры версии Java
8 ...
Теперь нам нужно проинструктировать как компилятор, так и тестовые плагины использовать настроенную версию java.
org.apache.maven.plugins maven-toolchains-plugin 1.1 toolchain ${jdk.version} org.apache.maven.plugins maven-compiler-plugin ${maven-compiler-plugin.version} ${jdk.version} ${jdk.version} true true org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version}
Дочерний модуль Maven pom.xml использование версии Java, отличной от стандартной
Модуль flexy-pool-core-java 9
дочерний модуль Maven, для которого требуется другая версия Java, должен только переопределить свойство по умолчанию jdk.version
Maven:
9
И все, теперь мы можем создавать каждый модуль, используя свою собственную минимально жизнеспособную версию Java.
Вывод
Использование нескольких версий Java является общим требованием при разработке платформ с открытым исходным кодом, предназначенных для широкого спектра сред проекта. Благодаря плагину Maven Toolchains эту задачу очень легко решить.