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

Posted

技术标签:

【中文标题】Maven - 在当前项目和插件组中找不到前缀“tomcat7”的插件【英文标题】:Maven - No plugin found for prefix 'tomcat7' in the current project and in the plugin groups 【发布时间】:2014-08-10 06:34:21 【问题描述】:

我创建了一个 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>

【问题讨论】:

您可能不是从您的 Web 项目执行此命令。 @Aleksandr 谢谢你的回答,你是对的。现在我正在尝试解决另一个问题“无法调用 Tomcat 管理器:与127.0.0.1:8080 的连接被拒绝:连接被拒绝”我正在尝试解决。 tomcat7-maven-plugin pom.xml 中的版本具体化帮助了我。有&lt;version&gt;$tomcat7-maven-plugin.version&lt;/version&gt;。我把它改成了&lt;version&gt;2.2&lt;/version&gt;,一切正常! 【参考方案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]-plugin (maven-[short- name]-plugin 为 Maven 项目提供的插件“保留”。

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

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

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

See here for more info

【讨论】:

如果在pom中定义了插件,则无需更改settings.xml文件。 你说得对,我正在编辑答案以包含这个 “你只需要在你启动命令的项目上声明插件”对 pom.xml 意味着什么?我该怎么做? 这意味着如果您想从命令行调用的插件,使用 short notation(不是 FQN)已经在 pom.xml 中定义 在您从中调用命令的模块中,不需要 &lt;pluginGroups&gt; 我想补充一点,settings.xml 文件位于 apache-maven-XXX\conf\ 文件夹中,因为它不容易找到,正在我自己是一个初学者,并且该信息可能对其他人有用(尽管毕竟我得到它与 maven-plugin-dependency 提示一起工作;))【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

表示未找到tomcat7插件。将此添加到您的 pom.xml 中。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.3-SNAPSHOT</version>
        </plugin>
    </plugins>
</build>

【讨论】:

【参考方案4】:

错误是插件在&lt;reporting&gt;里面,应该是在&lt;build&gt;里面

之前:

<reporting>
<plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
    <port>8080</port>
    <path>/</path>
    </configuration>
    </plugin>
</plugins>
</reporting>

之后:

<build>
<plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
    <port>8080</port>
    <path>/</path>
    </configuration>
    </plugin>
</plugins>
</build>

【讨论】:

【参考方案5】:

检查我的 pom.xml 文件后,我确保在 JAVA 构建路径 JAVA BUILD PATH 下的构建顺序中选择了我的所有依赖项

【讨论】:

一般来说,您可能需要添加更多细节,说明您的答案如何解决原始问题【参考方案6】:

我在使用基于文件的 idp.xml 并对其进行格式化时遇到了同样的错误!!!不要格式化它,使用 curl 或 chrome 并将文件从 https://idp.ssocircle.com/idp-meta.xml 直接保存到 spring-security-saml-1.0.2.RELEASE\sample\src\main\resources\metadata\idm.xml

然后在SecurityContext.cml中

 <bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
    <constructor-arg>
        <list>
            <!-- Example of classpath metadata with Extended Metadata -->
            <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
                <constructor-arg>
                    <bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
                        <constructor-arg>
                            <bean class="java.util.Timer"/>
                        </constructor-arg>
                        <constructor-arg>
                            <bean class="org.opensaml.util.resource.ClasspathResource">
                                <constructor-arg value="/metadata/idp.xml"/>
                            </bean>
                        </constructor-arg>
                        <property name="parserPool" ref="parserPool"/>
                    </bean>
                </constructor-arg>
                <constructor-arg>
                    <bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
                    </bean>
                </constructor-arg>
            </bean>

</bean>

【讨论】:

以上是关于Maven - 在当前项目和插件组中找不到前缀“tomcat7”的插件的主要内容,如果未能解决你的问题,请参考以下文章

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

如何修复“在当前项目和插件组中找不到前缀'liquibase'的插件”

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

在当前项目和插件组 [org.apache.maven.plugins, org.codehaus.mojo] 中找不到前缀“gcloud”的插件

在当前项目中找不到前缀“jetty”的插件

在当前项目和存储库中可用的插件组 [] 中找不到前缀“war”的插件 [重复]