15

在 Maven 中,如何找出目标的默认阶段(如果此特定目标存在任何默认阶段)?

例子

我正在使用一个名为Jetty Maven Plugin的 Maven 插件。它包含一个目标jetty:run。运行命令mvn jetty:run(注意这个命令只包含一个目标,而不是一个阶段)首先构建一个指定的pom.xmlweb 应用程序直到默认test-compile阶段,然后将它部署在一个 Jetty 服务器中。

正如Mojo API Specification中所指出的,一个目标可以在其源代码中分配一个默认阶段(通过@phase或通过@execute phase)。如果是jetty:run,则默认阶段是@execute phase="test-compile"

但是查找源代码文件可能会变得相当复杂。有没有更简单的方法来找出默认阶段?

4

1 回答 1

21

最简单的解决方案是使用maven-help-plugin,如下所示:

mvn help:describe -DartifactId=maven-compiler-plugin -DgroupId=org.apache.maven.plugins -Dgoal=compile -Ddetail

这将打印出许多信息,但在第一行:

[INFO] Mojo: 'compiler:compile'
compiler:compile
  Description: Compiles application sources
  Implementation: org.apache.maven.plugin.CompilerMojo
  Language: java
  Bound to phase: compile

  Available parameters:
  ....

如果您尝试使用 jetty:run 像这样:

mvn help:describe -DartifactId=jetty-maven-plugin -DgroupId=org.mortbay.jetty -Dgoal=run -Ddetail

您将获得大量输出,但您不会看到默认阶段,因为它打算从命令行调用:

[INFO] Mojo: 'jetty:run'
jetty:run
  Description: This goal is used in-situ on a Maven project without first
    ....
    redeploying.
     .....

  Implementation: org.mortbay.jetty.plugin.JettyRunMojo
  Language: java
  Before this mojo executes, it will call:
    Phase: 'test-compile'

  Available parameters:
      ....
于 2012-09-07T07:51:24.973 回答