Подтвердить что ты не робот

Как определить и изменить версию Java Maven для выполнения?

При запуске нашей сборки Maven член моей команды получает эту ошибку при выполнении. Однако, когда мы запускаем java -version из ее командной строки, это указывает на Java 1.6.0_26. Очевидно, что ошибка, похоже, кричит, что Maven использует Java 5.

Как мне определить и изменить, какая версия Java используется Maven?

3 потенциально важных замечания:

  • Это выполняется в командной строке, не используя плагин Eclipse
  • JAVA_HOME настроен на Java 1.6 JDK
  • Использование Maven 2.2.1
4b9b3361

Ответ 1

mvn -version выведет, какую java он использует. Если JAVA_HOME установлен в действительный каталог JDK, а Maven использует что-то еще, то, скорее всего, кто-то вмешался в то, как Maven запускает.

Ответ 2

Вам нужно будет настроить maven-compiler-plugin для использования параметров 1.6 source и target (по умолчанию это 1.5).

Это лучше всего сделать в родительском pom вашего проекта в разделе <pluginManagment> (но вы всегда можете настроить его на отдельные проекты, конечно).

  <build>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.3.2</version>
          <configuration>
            <source>1.6</source>
            <target>1.6</target>

          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

Ответ 4

mvn -version сообщает вам, какой компилятор Maven использует, поэтому это отвечает на вопрос, если ваш POM не указывает значения переопределения для используемых версий.

Здесь самый простой способ указать переопределения в pom.xml:

<properties>
    <maven.compiler.target>1.9</maven.compiler.target>
    <maven.compiler.source>1.9</maven.compiler.source>
</properties>

В качестве альтернативы maven-compiler-plugin можно указать более явно. В этом случае просмотрите значения <source> и <target>, связанные с плагином.

Оба этих параметра описаны здесь.

Если ваш POM имеет <parent>, вам также нужно проверить это (рекурсивно).

Примечание. Если указаны source и target, эти значения передаются в качестве параметров командной строки для компилятора. Используя эту функцию, вы можете компилировать или запускать предыдущие версии Java, чем номинальное значение компилятора.