默认的 Maven tomcat 插件配置在哪里?

Where is the default Maven tomcat plugin configured?

在 Maven 项目中,我可以使用 tomcat 插件而无需将其添加到 POM。所以我可以像这样部署和 运行 我的 webapp:

mvn clean install tomcat:run

我知道它使用了一些默认配置,但我的问题是为什么 Maven 允许我使用这个插件,即使我没有配置它?它也不在超级 POM 中。所以我不知道它的配置来自哪里。有人知道吗?

Maven 对此有一些约定,即使您没有在项目 POM 或 settings.xml 中配置任何内容。 当您在命令行中以这种方式调用插件时,Maven 会尝试通过添加以下 groupId 之一来查找插件:

  • org.apache.maven.plugins
  • org.codehaus.mojo

对于 artifactId,它还会尝试使用以下之一来完成您指定的 "prefix"(此处为 tomcat):

  • maven-${prefix}-plugin: (convention for official plugins) -> maven-tomcat-plugin
  • ${prefix}-maven-plugin:(第 3 方插件的约定)-> tomcat-maven-plugin

对于版本,它只是尝试获取最新版本。

在您的特定情况下,默认值匹配:org.codehaus.mojo:tomcat-maven-plugin:1.1(或任何其他可用的版本)。

A bit more detail here 关于机制,以及如何将这些约定用于您自己的 groupId。