防止在多模块Maven中找到“未找到插件”

在多模块Maven项目的子模块上定义Maven插件会给我们“找不到插件”错误。 尤其是如果我们有一个多模块项目,并且只想在一个特定模块中应用Maven插件,则此错误会经常发生。

假设我们有一个看起来像这样的多模块root pom。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jdriven.blog</groupId><artifactId>maven-plugin-multimodule</artifactId><version>0.1-SNAPSHOT</version><packaging>pom</packaging><modules><module>module1</module> <!-- Module1 is a regular jar --><module>module2</module> <!-- Module2 has tomcat7 plugin configured --></modules>
</project>

本能地将插件(例如tomcat7)添加到此特定模块module2 ,就像这样。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>maven-plugin-multimodule-module2</artifactId><packaging>war</packaging><parent><groupId>com.jdriven.blog</groupId><artifactId>maven-plugin-multimodule</artifactId><version>0.1-SNAPSHOT</version><relativePath>../</relativePath></parent><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><!-- This is where our specific configuration goes --></configuration></plugin></plugins></build>
</project>

在多模块root pom上运行命令mvn tomcat7:help时,出现以下错误:

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

解决方案非常简单:我们在多模块root pom的pluginManagement部分中指定插件。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jdriven.blog</groupId><artifactId>maven-plugin-multimodule</artifactId><version>0.1-SNAPSHOT</version><packaging>pom</packaging><modules><module>module1</module> <!-- Module1 is a regular jar --><module>module2</module> <!-- Module2 has tomcat7 plugin configured --></modules><build><!-- In the multi-module root pom, use the pluginManagement to define the version of the maven-plugin --><pluginManagement><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins></pluginManagement></build></project>

并且在我们特定的模块module2我们清除了插件的版本,因为它已在多模块root pom(父代)中定义。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>maven-plugin-multimodule-module2</artifactId><packaging>war</packaging><parent><groupId>com.jdriven.blog</groupId><artifactId>maven-plugin-multimodule</artifactId><version>0.1-SNAPSHOT</version><relativePath>../</relativePath></parent><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><!-- No version needed here, it is already defined in the multi-module root pom --><configuration><!-- This is where our specific configuration goes --></configuration></plugin></plugins></build></project>

现在,何时可以运行命令mvn tomcat7:help而不会出现任何错误。 我们准备在子模块上配置插件。

翻译自: https://www.javacodegeeks.com/2015/03/prevent-no-plugin-found-in-multi-module-maven.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 4412跑程序,荣品4412的板子上跑纯linux

昨天开始突然想在4412上面跑人QT玩&#xff0c;首先得跑个纯linux昨天做好第一步&#xff0c;把根文件系统&#xff0c;用make_ext4fs 打包。make_ext4fs -l 34M -s system.img minifs/然后在uboot启动命令中把启动参数修改&#xff1a;setenv bootargs noinitrd root/dev/mmcb…

ASP.NET MVC 笔记

&#xff08;从今天开始&#xff0c;还是换回默认的代码高亮插件吧。。。话说此篇仅供个人遗忘后查阅&#xff0c;木有详尽解释。。。&#xff09; 1、Controller中的所有Action方法不限制返回值类型&#xff0c;返回值应该至少可以被ToString()&#xff0c;这样最终页面上呈现…

JPA 2.1:不同步的持久性上下文

JPA 2.1版带来了一种新的方式来处理持久性上下文与当前JTA事务以及资源管理器之间的同步。 术语资源管理器来自Java事务处理API &#xff0c;它表示操纵一个资源的组件&#xff08;例如&#xff0c;使用JDBC驱动程序操纵的具体数据库&#xff09;。 默认情况下&#xff0c;容器…

麒麟Linux启动目录,优麒麟目录结构介绍 系统入门必备

对于Linux爱好者来说&#xff0c;深入了解Linux文件目录结构的标准和每个目录的详细功能&#xff0c;对于我们用好Linux系统至关重要&#xff0c;下面就由小编给大家介绍下优麒麟系统的目录结构&#xff0c;PS: 同样适用于其他Linux发行版。查看系统的全部目录&#xff1a;* 在…

java课堂作业(一)

1、环境变量配置参见&#xff1a;http://www.cnblogs.com/dongwenbo/p/3282014.html window ---> preference ---> java ---> installed jres ---> add jres tomcat 配置&#xff1a;myeclipse ---> preferences ---> myeclipse enterprise workbench --->…

为什么我的JVM访问的内存少于通过-Xmx指定的内存?

“嘿&#xff0c;你能来看看奇怪的东西吗&#xff1f;” 这就是我开始研究一个支持案例的方式&#xff0c;该案例将我引向了这篇博客文章。 当前的特殊问题与不同的工具报告了有关可用内存的不同数字有关。 简而言之&#xff0c;一位工程师正在研究特定应用程序的过多内存使用…

linux怎么安装高德导航软件,高德地图车机版如何安装?高德地图车机版安装教程...

高德地图车机版是高德为汽车车载机提供的一个专用版本&#xff0c;对于车主们来说有时候用手机导航实在是非常不方便&#xff0c;不仅屏幕小而且还可能中途来个电话什么的。高德地图车机版可以帮你的车载机装上导航地图&#xff0c;就算你不想买导航设备也能让你的车子为你导航…

SharePoint 2010 技术参数(整理)

今天整理一些 SharePoint 2010 的技术参数&#xff0c;其内容都来自 SharePoint-Sandbox 网站。 有些参数值是硬性的&#xff0c;比如列表单条记录的尺寸&#xff1b;而有些是为了使用和性能考虑的推荐值。 技术参数值列表最大记录数500万条列表单条记录上限8KB&#xff08;不含…

Dropwizard,MongoDB和Gradle实验

介绍 我使用Dropwizard&#xff0c;MongoDB和Gradle创建了一个小项目。 它实际上是从一个实验性的Guava缓存开始的&#xff0c;作为将计数器发送到MongoDB&#xff08;或任何其他DB&#xff09;的缓冲区。 我也想尝试MondleDB插件的Gradle。 接下来&#xff0c;我想创建某种接口…

linux eclipse svn插件安装,Linux上Eclipse安装SVN插件和安装JavaHL

在Eclipse上安装svn插件有两种选择&#xff0c;一种是Subclipse&#xff0c;一种是Eclipse Subversion。前者是svn的官网eclipse插件&#xff0c;后者是eclipse的官方svn插件&#xff0c;具体有什么不同我也不算很清楚&#xff0c;想知道的请自行百度。网上建议用Subclipse&…

用apache的httpclient发请求和接受数据

此处发请求的是用httpclient4,请自己下载所需要的jar包。 发post请求&#xff0c;并得到数据。 String url "http://localhost:8080/lee";url url "/query/action/export.action";String exportFilePath "lee"".csv.";final HttpCl…

使用Flyway在Java EE中进行数据库迁移

任何Java EE应用程序的数据库模式都会随着业务逻辑一起发展。 这使得数据库迁移对于任何Java EE应用程序都非常重要。 您是否还在执行应用程序时手动执行它们&#xff1f; 它仍然是一个锁定步骤过程&#xff0c;还是作为两个单独的脚本运行–一个用于应用程序部署&#xff0c;…

suse linux安装rpm包,linux – 如何为Suse创建RPM

重建现有的src.rpm可能是最简单的.我肯定不会采用configure,make,make install的方式,因为(a)不能扩展,(b)不提供容易删除/升级包和(c)不是原子的.建立RPM并不是那么难.在他们销毁网站之前,Linux.com上曾经有一个非常好的初学者教程.你可以尝试这个one,但这是很多文字,不容易消…

在wp中,使用NavigationService.Navigate导航页面出现错误

我们在WP项目中采用页面导航时候&#xff0c;经常会使用以下代码 NavigationService.Navigate(new Uri("/Page1.xaml",UriKind.Relative));但是&#xff0c;有的时候会出现错误&#xff1a; "Error 1 An object reference is required for the non-static field…

linux iso合并,把RedHat Linux 5.0的CD ISO合并成DVD的脚本

最近找RedHat Linux5.0 x86_64的DVD ISO文件&#xff0c;结果一直找不到&#xff0c;却找到了6个cd的ISO&#xff0c;因为最后一个为源码盘&#xff0c;暂时不管&#xff0c;把其他5个CD合并成一个DVD。脚本如下&#xff1a;vim dvd.sh#!/bin/bash# by Chris Kloiber# A quick …

Guava的测试集合实现

我目前正在为LibFX添加一个新功能&#xff0c;为此我创建了一些类似于Java Collections Framework的自定义集合。 我一直在寻找可以针对它们进行测试的测试&#xff0c;并很高兴发现Google的Guava包含了我所需要的&#xff1a;一个庞大的测试套件&#xff0c;它针对JDK和Guava的…

SSDT – Error SQL70001 This statement is not recognized in this context-摘自网络

March 28, 2013 — arcanecode One of the most common errors I get asked about when using SQL Server Data Tools (SSDT) Database Projects is the error “This statement is not recognized in this context”. This is actually a pretty simple error to fix. Envisi…

linux wget 图片,15个Linux Wget下载实例终极指南

9、使用wget -i下载多个文件首先&#xff0c;保存一份下载链接文件cat>filelist.txt url1 url2 url3 url4接着使用这个文件和参数-i下载wget -i filelist.txt10、使用wget --mirror镜像网站下面的例子是下载整个网站到本地。wget --mirror -p --convert-links -P ./LOCAL UR…

带有JAX-RS和PrimeFaces的RESTful图表

通常&#xff0c;利用图表提供数据的可视表示很有用。 PrimeFaces提供制图解决方案&#xff0c;可轻松将数据的可视表示形式添加到Web和移动应用程序中。 如果将PrimeFaces图表组件与RESTful Web服务数据结合使用&#xff0c;我们可以创建自定义图表&#xff0c;以适合桌面和移…

UVAlive 6131 dp+斜率优化

这道题和06年论文《从一类单调性问题看算法的优化》第一道例题很相似。 题意&#xff1a;给出n个矿的重量和位置&#xff0c;这些矿石只能从上往下运送&#xff0c;现在要在这些地方建造m个heap&#xff0c;要使得&#xff0c;sigma距离*重量最小。 思路&#xff1a;O(n ^ 3)的…