【问题标题】:How are maven plugin aliases mappedmaven插件别名是如何映射的
【发布时间】:2015-12-10 21:11:46
【问题描述】:

我试图了解 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:cleanmvn 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:testmvn surefire:test 相同。

所以不知何故,maven-surefire-plugin:2.12.4 似乎指的是surefireorg.apache.maven.plugins:maven-clean-plugin:2.5clean

当我查看有效的 pom 时,我看到以下内容 maven-surefire-插件 2.12.4 默认测试 测试 测试 Maven 清洁插件 2.5 默认清理 干净的 干净的

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

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

【问题讨论】:

    标签: java maven maven-3


    【解决方案1】:

    来自关于plugins development的官方Maven文档:

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

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

      <pluginGroups> <pluginGroup>sample.plugin</pluginGroup>
      &lt;/pluginGroups&gt;

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

    所以,别名不是在 pom 文件中定义的,而是 maven 内置机制的一部分。有关Plugin Prefix Resolution的官方文档也提供了更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2015-07-15
      • 1970-01-01
      • 2019-01-28
      • 2012-03-06
      相关资源
      最近更新 更多