Maven插件别名如何映射

Kar*_*ick 3 java maven-3 maven

我想了解什么是mvn clean:clean实际上是做什么的。

mvn -B help:describe -Dcmd=clean
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building sample-one 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.2:describe (default-cli) @ sample-one ---
[INFO] 'clean' is a lifecycle with the following phases:
* pre-clean: Not defined
* clean: org.apache.maven.plugins:maven-clean-plugin:2.5:clean
* post-clean: Not defined

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.689 s
[INFO] Finished at: 2015-12-10T10:20:16-08:00
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

在我看来,这mvn clean:clean和做事一样mvn org.apache.maven.plugins:maven-clean-plugin:2.5:clean。因此我假设第一个cleanmvn clean:clean只是一个别名org.apache.maven.plugins:maven-clean-plugin:2.5。与mvn maven-surefire-plugin:2.12.4:test相同mvn surefire:test

所以在某种程度上,maven-surefire-plugin:2.12.4似乎是指surefireorg.apache.maven.plugins:maven-clean-plugin:2.5clean

当我看有效的pom时,我看到以下的maven-surefire-plugin 2.12.4 default-test test test maven-clean-plugin 2.5 default-clean clean clean

如您所见,pom似乎没有定义别名。所以以下是我的问题

  1. 我对插件别名的理解正确吗
  2. 如果我对别名的理解是正确的-a)如何以及在何处定义别名?b)有没有办法列出所有别名。

A_D*_*teo 7

来自有关插件开发的 Maven官方文档:

缩短命令行
有几种方法可以减少所需的键入量:

  • 如果您需要运行本地存储库中安装的插件的最新版本,则可以忽略其版本号。因此,只需mvn sample.plugin:hello-maven-plugin:sayhi运行您的插件即可。
  • 您可以为插件分配一个缩短的前缀,例如mvn hello:sayhi。如果遵循使用约定${prefix}-maven-plugin(或者maven-${prefix}-plugin如果插件是Apache Maven项目的一部分),则将自动完成此操作。您也可以通过其他配置来分配一个-有关更多信息,请参阅插件前缀映射简介
  • 最后,您还可以将插件的groupId添加到默认搜索的groupId列表中。为此,您需要在${user.home}/.m2/settings.xml文件中添加以下内容:

    <pluginGroups> <pluginGroup>sample.plugin</pluginGroup>
    </pluginGroups>

此时,您可以使用运行mojo mvn hello:sayhi

因此,别名不是在pom文件中定义的,而是maven内置机制的一部分。有关插件前缀解析的官方文档中也提供了更多详细信息。