Рубрики
Без рубрики

Многоверсионные модули Maven и Java

Узнайте, как настроить Maven для выбора конкретной версии Java, если в базовой операционной системе установлено несколько версий Java.

Автор оригинала: 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 эту задачу очень легко решить.