【问题标题】:Maven - No plugin found for prefix 'tomcat7' in the current project and in the plugin groupsMaven - 在当前项目和插件组中找不到前缀“tomcat7”的插件
【发布时间】: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;,一切正常!

标签: java maven tomcat


【解决方案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 插件。这是你可以做的(我在我的测试项目中测试过它并且它有效):

  1. 就像你做的那样在你的pom.xml文件中添加tomcat7插件依赖。
  2. 运行mvn installmvn package以安装该tomcat7插件
  3. 现在您应该可以运行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>
        

        【讨论】:

          猜你喜欢
          • 2014-01-31
          • 2017-06-02
          • 2015-08-31
          • 2018-04-28
          • 2016-07-09
          • 1970-01-01
          • 2023-03-04
          • 2019-08-09
          • 2016-04-18
          相关资源
          最近更新 更多