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

agu*_*ina 23 java tomcat maven

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

-parent
    -core
    -web
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用该命令进行部署时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]
Run Code Online (Sandbox Code Playgroud)

我把这个配置放在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>
Run Code Online (Sandbox Code Playgroud)

Tom*_*ome 21

插件目标可以使用他们的'FQN'来调用:groupId:artifactId:version:goal,或者,如果适用,还有更短的命令(可用的许多变体).仅使用插件的短名称(在tomcat7:deploy中,tomcat7是短名称,deploy为目标/ mojo)适用于:

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

要么

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

2)artifactId是[短名称] -maven-pluginmaven- [short-name] -plugin(maven- [short-name] -plugin被'保留'为Maven项目提供的插件.

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

在您的情况下,第二个条件为true,因此您只需在要启动命令的项目上声明插件,或将其添加到您的user settings.xml文件中:

<pluginGroups>
  <pluginGroup>org.apache.tomcat.maven</pluginGroup>
</pluginGroups>
Run Code Online (Sandbox Code Playgroud)

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


Ami*_* Al 5

您收到该错误的原因是您还没有安装 Tomcat7 插件。这是你可以做的(我在我的测试项目中测试了它并且它有效):

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

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