Я не очень опытен с maven и, экспериментируя с многомодульным проектом, я начал задаваться вопросом, как я могу указать java-версию для всех моих дочерних модулей в родительском maven pom. До сегодняшнего дня я использовал только:
<properties>
<java.version>1.8</java.version>
</properties>
но при исследовании я обнаружил, что вы также можете указать java-версию в плагине компилятора maven, например:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
И затем оберните это в тег управления плагином, чтобы использовать это использование детьми. Итак, первый вопрос: каковы различия в настройке java-версии в свойствах и в плагине компилятора maven?
Я не мог найти четкого ответа, но в процессе исследования я обнаружил, что вы также можете указать версию java следующим образом:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
которые предполагают, что плагин компилятора существует, даже если я не объявляю его явно. Выполнение выходов пакета mvn с помощью
maven-compiler-plugin:3.1:compile (default-compile) @ testproj ---
и некоторые другие плагины, которые я не объявлял. Значит, эти плагины по умолчанию, скрытая часть maven pom? Существуют ли различия в настройке источника/цели в свойствах и в элементе конфигурации плагина maven?
Некоторые другие вопросы - каким образом следует использовать (и если они не равны)? Какой из них лучше всего подходит для многомодульного проекта, и что произойдет, если версия java, указанная в pom, отличается от версии, указанной в JAVA_HOME?