Maven - 在当前项目和插件组中找不到前缀“tomcat7”的插件

2022-09-01 12:06:26

我创建了一个 Maven 项目。这是结构:

-parent
    -core
    -web

但是当我尝试使用命令进行部署时,我收到以下错误:mvn tomcat7:deploy

No plugin found for prefix 'tomcat7' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo]

我把这个配置放在pom.xml(Web项目):”

<build>
    <finalName>MavenWeb</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>
        </plugin>
    </plugins>
</build>

答案 1

插件目标可以使用其“FQN”调用:groupId:artifactId:version:goal,或者如果适用,可以使用较短的命令(许多可用的变体)。如果出现以下情况,仅使用插件的短名称(在您的 tomcat7:deploy 中,tomcat7 是短名称,deploy 是目标/mojo)是适用的:

1)插件的groupId包含在Maven的已知插件组中。org.apache.maven.plugins 默认在列表中。

您正在调用 Maven 命令的项目的 pom.xml声明插件

2)artifactId是[short-name]-maven-pluginmaven-[short-name]-pluginmaven-[短名称]-插件被“保留”给Maven项目提供的插件。

这就解释了为什么mvn compiler:compile可以在任何项目上开箱即用,但不能在tomcat7:deploy上使用

在你的例子中,第二个条件是真的,所以你只需要在你正在启动命令的项目上声明插件,或者将其添加到你的用户设置.xml文件:

<pluginGroups>
  <pluginGroup>org.apache.tomcat.maven</pluginGroup>
</pluginGroups>

有关详细信息,请参阅此处


答案 2

您收到该错误的原因是因为您根本没有安装Tomcat7插件。以下是您可以执行的操作(我在我的测试项目中对此进行了测试,并且它有效):

  1. 在您的文件中添加tomcat7插件依赖项,就像您所做的那样。pom.xml
  2. 运行或安装该 tomcat7 插件mvn installmvn package
  3. 现在你应该能够运行mvn tomcat7:deploy

我测试了这个解决方案,它就像一个魅力:)mvn tomcat7:run


推荐