Как выяснить и изменить, какую версию Java Maven использует для выполнения? - PullRequest
53 голосов
/ 12 августа 2011

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

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

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

  1. Это выполняется в командной строке, без использования плагина Eclipse
  2. JAVA_HOME установлен на Java 1.6 JDK
  3. Использование Maven 2.2.1

Ответы [ 4 ]

85 голосов
/ 12 августа 2011

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

8 голосов
/ 12 августа 2011

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

Это лучшее, что сделано в родительском помпе вашего проекта в <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>
1 голос
/ 27 сентября 2017

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, чем номинальное значение компилятора.

1 голос
/ 12 августа 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...