У меня есть проект с pom.xml
, который имеет следующую <build>
заявление:Сборка и установка Maven артефакты на Java 8
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
Когда я бегу mvn install
на этом проекте, он компилирует проект, запускает юнит-тесты и публикует это к моему местному репо. Я пытаюсь узнать немного больше о Maven здесь, и я с трудное время нахождения документации/разъяснения по следующему:
- Как я смог запустить
mvn install
, если POM не объявляет его подbuild/plugins
?maven-compiler-plugin
включаетmaven-install-plugin
, если да, то как я мог это понять? - Самое важное: значение
build/plugins/plugin/configuration/source
и.../target
оба установлены на1.8
. Если на моей машине есть Java 8, и я запускаюmvn install
в этом проекте без каких-либо ошибок, делает ли это гарантию, что проект строит с Java 8? Я смотрю на docs for the Compiler Plugin и не вижу этихsource
/target
конфигураций, перечисленных в любом месте.
Для документов смотрите здесь: http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html – khmarbaise
Спасибо @khmarbaise (+1) - из этой ссылки я нашел [Lifecycle Doc ] (http://maven.apache.org/ref/3.2.5/maven-core/lifecycles.html) и посмотрите, что 'compile' находится выше по потоку от' install', что затем объясняет, почему триггеры 'install' «компилировать».Однако это не объясняет, почему POM объявляет плагин компилятора, но не плагин установки. Мысли? – smeeb
@smeeb, потому что это не обязательно. maven поставляется в комплекте с компилятором и плагином установки - они встроены. Почти каждая версия maven поставляется с другой версией этих плагинов. Вы меняете версию или настраиваете ее, но вам этого не нужно. Например. если вы хотите сообщить компилятору плагин _how_ (какой языковой уровень) для компиляции. – Alexander