I found this description но он не кажется исчерпывающим. Может кто-нибудь объяснить подробно, в чем разница между executions
и configurations
в плагине maven?В чем разница между исполнениями и конфигурациями в плагине maven?
ответ
<execution>
заставляет плагин выполняться во время жизненного цикла сборки maven, то есть во время сборки. <configuration>
позволяет настроить плагин для того, как он должен себя вести во время выполнения. Многие плагины Maven предоставляют документацию об их параметрах конфигурации, например. maven-compiler-plugin.
Вы можете определить <configuration>
s на уровне <plugin>
или уровне <execution>
. Первый является глобально действительным для всех исполнений, последний специфичен для выполнения.
Пример для глобальных конфигураций выполнения конкретных:
Предположим, вы должны скомпилировать проект с Java 1.7, но вы хотите рано принимать Java 9 Jigsaw функции и добавить module-info.java
к вашему проекту. Этот Java-файл не будет компилироваться с использованием исходного уровня 1.7. Что вы можете сделать, это определить два выполнений Maven-компилятора-плагин, один, который собирает все, кроме module-info.java
с уровнем источника 1.7 и один, который делает только компилировать module-info.java
с уровнем источника 1.9:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<!-- Global plugin configuration for source and target levels. -->
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
<executions>
<!-- Compile all code except module-info.java with the configured source level -->
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<excludes>
<exclude>module-info.java</exclude>
</excludes>
</configuration>
</execution>
<!-- Compile module-info.java with source level 1.9 -->
<execution>
<id>compile-module-info-java</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.9</source>
<target>1.9</target>
<includes>
<include>module-info.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
Великие умы думают одинаково. :-) Удивительно, когда это происходит: два человека самостоятельно и одновременно пишут более-менее одно и то же. – Daniel
<configuration>
раздел снаружи Блок <execution>
влияет на поведение плагина в общем виде. Например, плагины, которые либо выполняются непосредственно через CLI, либо имеют фазу по умолчанию, к которой они привязаны, будут использовать этот тип конфигурации. Примером такого плагина может быть плагин compiler.
С другой стороны, секция <configuration>
внутри<execution>
блок применяется только к этому конкретному исполнению.
Как обычно, более конкретная конфигурация может переопределять общую конфигурацию. Поэтому, если общая конфигурация (вне блока исполнения) говорит <doCheck>false</doCheck>
, выполнение может выбрать только переопределить это, выполнив <doCheck>true</doCheck>
.
Другая особенность общих конфигураций заключается в том, что их параметры будут наследоваться всеми исполнениями этого плагина.
Я думаю, что, объединив все три ответа (на момент написания), он должен дать довольно последовательную и ясную картину того, как это работает. – Daniel
Я думаю, что ответ от @Stefan уже достаточно ясен. Я бы хотел быть немного более подробным, если это поможет.
«Исполнение» под плагином объявляет «что делать когда». В основном, execution
обычно содержит по меньшей мере: phase
и goal
(я знаю, что вы не всегда видите его в конфиге, но концептуально они есть), который вы можете увидеть как: Когда процесс сборки достиг phase
, тогда действие goal
плагина будет выполнен.
Конечно, у вас может быть несколько execution
s для плагина, так что разные/одинаковые цели могут выполняться на разных/одинаковых этапах.
Затем перейдите к configuration
.Иногда вам нужно рассказать дополнительный плагин о том, как плагин должен действовать, потому что плагин, возможно, не сможет угадать, что вы хотите сделать по умолчанию. configuration
делает такой работа. Вы можете обратиться к документу цели плагина, чтобы узнать, какую конфигурацию они принимают.
уровень Plugin configuration
будет применяться ко всем execution
с этого плагина, в то время как вы можете также определить configuration
под каждым execution
, которые служат в качестве execution
Определённые конфигурации. Уровень плагина configuration
+ уровень выполнения configuration
- это «реальная» конфигурация, полученная execution
.
- 1. В чем разница между конфигурациями «веб-ферм» и «веб-садов»?
- 2. В чем разница между get_option и get_user_option в плагине WordPress?
- 3. В чем разница между maven webapp и архетипом сайта maven?
- 4. В чем разница между плагинами Maven Surefire и Maven Failsafe?
- 5. В чем разница между обновлением maven и сборкой maven?
- 6. В чем разница между выпуском maven и плагинами сборки maven?
- 7. В чем разница между <scope> и <phase> в плагине maven (пример jbehave)
- 8. В чем разница между целью «развернуть» и «запустить» в плагине maven tomcat
- 9. В чем разница между `warSourceExcludes` и` packagingExcludes` в Maven
- 10. В чем разница между интерактивным и пакетным режимами в Maven?
- 11. В чем разница между «+ -» и «\ -» в выводе дерева зависимостей maven?
- 12. В чем разница между репозиторием и зависимостью в Maven?
- 13. В чем разница между платформой и инструментом?
- 14. В чем разница между maven.plugin.classpath и maven.runtime.classpath
- 15. В чем разница между -Dwtpversion и wtpversion?
- 16. В чем разница между M2_HOME и MAVEN_HOME
- 17. В чем разница между консолью и eclipse maven
- 18. В чем разница между тегами parent, dependency и plugin (Maven)
- 19. В чем разница между playn.io и com.googlecode.playn
- 20. В чем разница между «и»?
- 21. В чем разница между `{}` и `[]`?
- 22. В чем разница между == и ===?
- 23. В чем разница между «+» и «\ +»?
- 24. В чем разница между + = и = +?
- 25. В чем разница между/* ... */и/** ... */
- 26. В чем разница между: и +:
- 27. В чем разница между $ {} и # {}
- 28. В чем разница между $ _. и $ _
- 29. В чем разница между = и: =
- 30. В чем разница между && и &?
Вы имеете в виду, кроме 'исполнения' * has-a *' configuration'? –
@KevinKrumwiede Эти элементы также живут на одной высоте. Вы можете иметь конфигурацию без выполнения. –