Где указана версия JDK, используемая компилятором Maven? - PullRequest
9 голосов
/ 07 марта 2012

Когда я не определяю что-то, как указано ниже, в моем файле pom.xml, где в моей системе определено для Maven, какую версию Java JDK использовать при компиляции (у меня установлено несколько версий, JAVA_HOME балловодному из них)?

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

Ответы [ 4 ]

9 голосов
/ 07 марта 2012

Maven doc говорит:

Плагин компилятора используется для компиляции исходников вашего проекта.Компилятором по умолчанию является javac, который используется для компиляции исходных кодов Java.Также обратите внимание, что в настоящее время настройка источника по умолчанию равна 1,5, а настройка цели по умолчанию равна 1,5, независимо от JDK, с которым вы запускаете Maven. Если вы хотите изменить эти значения по умолчанию, вы должны установить источник и цель, как описанов настройке -source и -target компилятора Java.

ref: http://maven.apache.org/plugins/maven-compiler-plugin/index.html

Эта интересная тема в Maven's Jira Изменить уровень источника по умолчаниюдо 1,5


РЕДАКТИРОВАТЬ:
Обновление для Maven 3.0 и более поздних версий:

Плагин компилятора используется для компиляции источниковвашего проекта. Начиная с версии 3.0 компилятором по умолчанию является javax.tools.JavaCompiler (если вы используете Java 1.6) и используется для компиляции исходных кодов Java.Если вы хотите принудительно подключить плагин с помощью javac, вы должны настроить параметр плагина forceJavacCompilerUse.

Источник: http://maven.apache.org/plugins/maven-compiler-plugin/index.html

Спасибо nachteil за указание на него.

5 голосов
/ 29 сентября 2014

просто используйте свойства

<properties>
    <maven.compiler.target>1.7</maven.compiler.target>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.test.skip>true</maven.test.skip>
</properties>
3 голосов
/ 19 февраля 2015

От doucemntation плагина компилятора maven:

Начиная с версии 3.0 компилятором по умолчанию является javax.tools.JavaCompiler (если вы используете java 1.6) и используется для компиляции исходных кодов Java. Если вы хотите принудительно подключить плагин с помощью javac, вы должны настроить опцию плагина forceJavacCompilerUse.

Я нашел этот пост через поисковик и думаю, что стоит обновить. Кроме того: параметры -target и -source не влияют на сам компилятор, а скорее на способ, которым он обрабатывает исходный код и создает выходной байт-код.

1 голос
/ 16 марта 2012

Вы должны определить свойство в файле maven setting.xml. Свойство является вашим вторым путем javac. (D: \ dev \ java \ ibm \ java1.6.0 \ bin \ javac) После использования этого свойства для maven-compiler-plugin в вашем файле pom.

setting.xml

 <settings>
    <profiles>
      <profile>
          <id>IBM_JAVA</id>
            <properties>
              <IBM_JAVA_1_6_JAVAC>D:\dev\java\ibm\java1.6.0\bin\javac</IBM_JAVA_1_6_JAVAC>
            </properties>
      </profile>
    </profiles>
    <activeProfiles>     
        <activeProfile>IBM_JAVA</activeProfile>   
    </activeProfiles>
    </settings> 

pom.xml

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
            <fork>true</fork>
            <executable>${IBM_JAVA_1_6_JAVAC}</executable>
            <encoding>UTF-8</encoding>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
</plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...