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 中的版本具体化帮助了我。有<version>$tomcat7-maven-plugin.version</version>
。我把它改成了<version>2.2</version>
,一切正常!
【参考方案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-plugin 或 maven-[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 中定义 在您从中调用命令的模块中,不需要 <pluginGroups>
。
我想补充一点,settings.xml 文件位于 apache-maven-XXX\conf\ 文件夹中,因为它不容易找到,正在我自己是一个初学者,并且该信息可能对其他人有用(尽管毕竟我得到它与 maven-plugin-dependency 提示一起工作;))【参考方案2】:
您收到该错误的原因是您根本没有安装 Tomcat7 插件。这是你可以做的(我在我的测试项目中测试过它并且它有效):
-
就像你做的那样在你的
pom.xml
文件中添加tomcat7插件依赖。
运行mvn install
或mvn 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】:错误是插件在<reporting>
里面,应该是在<build>
里面
之前:
<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'的插件”
在当前项目和插件组 [org.apache.maven.plugins, org.codehaus.mojo] 中找不到前缀“gcloud”的插件