2016-09-16 4 views
0

У меня есть проект maven. В файле pom.xml говорится следующее:maven-компилятор-плагин сломан на linux?

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

AFAIK это правильно, она должна опираться на JDK 7.

Я запускаю Linux-дистрибутив на основе Debian, и когда я делаю mvn clean install, похоже, он всегда строится против версии javac, установленной мной в ОС.

Я пробовал читать то, что плагин точно делает https://maven.apache.org/plugins/maven-compiler-plugin/, но на самом деле это не так.

Пример: У меня есть javac 8, работающий на моем os. Когда я вызываю mvn clean install, проект составляет JDK 8, а не JDK 7, как указано в pom.xml. Почему это?

ответ

2

По умолчанию Maven-компилятором плагин использует% JAVA_HOME%/bin/JAVAC для компиляции, если:

  • вы установите исполняемый-параметр в другое место
  • вы используете Toolchains, который, кажется, чтобы соответствовать вашим требованиям, то есть другой Java Runtime для Maven по сравнению с JDK для maven-compiler-plugin.
+0

Ах спасибо. Я думаю, что неправильно понял, что делает источник и цель. –

0

Исходные и целевые настройки передаются только компилятору javac в качестве параметров. Используется javac, установленный на машине.

+0

У меня есть несколько установленных javac. Тогда какая цель плагина отличается от того, какая версия javac должна использоваться? –

+1

Java 8 может компилировать исходники в формате java 7 и генерировать классы формата java 7. В некоторой степени это работает отлично. –

+0

@JoopEggen Спасибо, что очистили это! –

Смежные вопросы