maven 插件别名是如何映射的
How are maven plugin aliases mapped
我想了解 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] ------------------------------------------------------------------------
在我看来 mvn clean:clean
与 mvn org.apache.maven.plugins:maven-clean-plugin:2.5:clean
相同。因此我假设 mvn clean: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
似乎指的是 surefire
,org.apache.maven.plugins:maven-clean-plugin:2.5
似乎指的是 clean
。
当我查看 effective-pom 时,我看到以下内容
maven-surefire-插件
2.12.4
默认测试
测试
测试
maven-clean-插件
2.5
默认清理
干净的
干净的
如您所见,pom 似乎没有定义别名。下面是我的问题
- 我对插件别名的理解是否正确
- 如果我对别名的理解是正确的 - a) 它们是如何定义的,在哪里定义的? b) 有没有办法列出所有别名。
来自关于 plugins development 的官方 Maven 文档:
Shortening the Command Line
There are several ways to reduce the amount of required typing:
- If you need to run the latest version of a plugin installed in your local repository, you can omit its version number. So just use
mvn sample.plugin:hello-maven-plugin:sayhi
to run your plugin.
- You can assign a shortened prefix to your plugin, such as
mvn hello:sayhi
. This is done automatically if you follow the convention of using ${prefix}-maven-plugin
(or maven-${prefix}-plugin
if the plugin is part of the Apache Maven project). You may also assign one through additional configuration - for more information see Introduction to Plugin Prefix Mapping.
Finally, you can also add your plugin's groupId to the list of groupIds searched by default. To do this, you need to add the following to your ${user.home}/.m2/settings.xml
file:
<pluginGroups>
<pluginGroup>sample.plugin</pluginGroup>
</pluginGroups>
At this point, you can run the mojo with mvn hello:sayhi
.
所以,别名不是在pom文件中定义的,而是maven内置机制的一部分。有关 Plugin Prefix Resolution.
的官方文档中还提供了更多详细信息
我想了解 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] ------------------------------------------------------------------------
在我看来 mvn clean:clean
与 mvn org.apache.maven.plugins:maven-clean-plugin:2.5:clean
相同。因此我假设 mvn clean: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
似乎指的是 surefire
,org.apache.maven.plugins:maven-clean-plugin:2.5
似乎指的是 clean
。
当我查看 effective-pom 时,我看到以下内容 maven-surefire-插件 2.12.4 默认测试 测试 测试 maven-clean-插件 2.5 默认清理 干净的 干净的
如您所见,pom 似乎没有定义别名。下面是我的问题
- 我对插件别名的理解是否正确
- 如果我对别名的理解是正确的 - a) 它们是如何定义的,在哪里定义的? b) 有没有办法列出所有别名。
来自关于 plugins development 的官方 Maven 文档:
Shortening the Command Line
There are several ways to reduce the amount of required typing:
- If you need to run the latest version of a plugin installed in your local repository, you can omit its version number. So just use
mvn sample.plugin:hello-maven-plugin:sayhi
to run your plugin.- You can assign a shortened prefix to your plugin, such as
mvn hello:sayhi
. This is done automatically if you follow the convention of using${prefix}-maven-plugin
(ormaven-${prefix}-plugin
if the plugin is part of the Apache Maven project). You may also assign one through additional configuration - for more information see Introduction to Plugin Prefix Mapping.Finally, you can also add your plugin's groupId to the list of groupIds searched by default. To do this, you need to add the following to your
${user.home}/.m2/settings.xml
file:
<pluginGroups> <pluginGroup>sample.plugin</pluginGroup>
</pluginGroups>
At this point, you can run the mojo with
mvn hello:sayhi
.
所以,别名不是在pom文件中定义的,而是maven内置机制的一部分。有关 Plugin Prefix Resolution.
的官方文档中还提供了更多详细信息