Вы можете связать плагин (например, echo-maven-plugin
) с фазами жизненного цикла clean
, чтобы помочь проверить, выполняется ли каждая фаза или когда она выполняется.
Например,учитывая следующее определение плагина:
<plugin>
<groupId>com.github.ekryd.echo-maven-plugin</groupId>
<artifactId>echo-maven-plugin</artifactId>
<version>1.2.0</version>
<executions>
<execution>
<id>pre-clean</id>
<phase>pre-clean</phase>
<goals>
<goal>echo</goal>
</goals>
<configuration>
<message>In 'pre-clean'</message>
</configuration>
</execution>
<execution>
<id>clean</id>
<phase>clean</phase>
<goals>
<goal>echo</goal>
</goals>
<configuration>
<message>In 'clean'</message>
</configuration>
</execution>
<execution>
<id>post-clean</id>
<phase>post-clean</phase>
<goals>
<goal>echo</goal>
</goals>
<configuration>
<message>In 'post-clean'</message>
</configuration>
</execution>
</executions>
</plugin>
Вызов mvn clean
приведет к следующему выводу:
$ mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] --- echo-maven-plugin:1.2.0:echo (pre-clean) @ sandbox ---
[INFO] In 'pre-clean'
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ sandbox ---
[INFO] Deleting target
[INFO]
[INFO] --- echo-maven-plugin:1.2.0:echo (clean) @ sandbox ---
[INFO] In 'clean'
Таким образом, здесь нет вызова фазы post-clean
.
Вызов mvn clean compile
приведет к следующему выводу:
$ mvn clean compile
[INFO] Scanning for projects...
[INFO]
[INFO] --- echo-maven-plugin:1.2.0:echo (pre-clean) @ sandbox ---
[INFO] In 'pre-clean'
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ sandbox ---
[INFO]
[INFO] --- echo-maven-plugin:1.2.0:echo (clean) @ sandbox ---
[INFO] In 'clean'
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ sandbox ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ sandbox ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 5 source files to ...
Опять же, там нет вызова фазы post-clean
.Это подразумевает, что maven-clean-plugin (и, возможно, ничего больше) не привязан к post-clean
.
Invoking mvn post-clean
приведет к , что вызовет фазу post-clean
...
$ mvn post-clean
[INFO] Scanning for projects...
[INFO]
[INFO] --- echo-maven-plugin:1.2.0:echo (pre-clean) @ sandbox ---
[INFO] In 'pre-clean'
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ sandbox ---
[INFO] Deleting target
[INFO]
[INFO] --- echo-maven-plugin:1.2.0:echo (clean) @ sandbox ---
[INFO] In 'clean'
[INFO]
[INFO] --- echo-maven-plugin:1.2.0:echo (post-clean) @ sandbox ---
[INFO] In 'post-clean'
Итак, исходя из вышеприведенного теста, я думаю, что следующие утверждения верны:
post-clean
это не , вызываемое при вызовеclean
post-clean
- это только , вызываемый при явном вызове post-clean
(примечание: непосредственный вызов фаз pre-
и post-
необычен)