关于maven的规则插件:Maven Enforcer plugin
Maven提供了Maven-Enforcer-Plugin插件,用来校验约定遵守情况(或者说校验开发环境)。比如JDK的版本,Maven的版本,开发环境(Linux,Windows等),依赖jar包的版本等等
看有些文章说,这个插件检查的是maven最终使用的版本情况,我不认同,因为这个插件有个设置是:是否检查传递依赖
如果不设置,就有可能失去对属于间接依赖的插件的检查(假如这个依赖插件只出现在间接依赖里)如果设置了,就会检查传递性依赖,如果传递性依赖不满足条件也会导致项目编译失败,这是不合理的,因为maven最终发布的项目jar包里,有可能并包含这个依赖(在处理冲突时去掉:路径最短原则;第一声明原则)
另外:这个插件无法处理像 [INFO] | \- org.springframework:spring-expression:jar:3.2.4.RELEASE:compile 这种后面还带“RELEASE”信息的
我们再来看下mvn的dependency插件的功能:
mvn dependency:tree -Dverbose 可以显示哪些版本因为冲突而被忽略

mvn dependency:copy-dependencies -DoutputDirectory=$WORKSPACE/dependencies可以把项目的所有依赖copy到一个指定的目录,通过这个目录,你可以看到项目的所有依赖信息。
你在根目录(父pom文件位置)执行这条命令,就能看到项目的所有依赖(包括传递性依赖);你在子模块(子pom.xml文件所在目录)目录执行这个命令,就能看到子模块的所有依赖(包括传递性依赖),而且是从上图的信息里可以看到,各个模块冲突的依赖已经被忽略。
但是它存在的问题是,如果多个子模块含有一个依赖的多个版本,该如何处理?最终的项目打包会使用哪一个版本呢?
mvn install/mvn deploy 本地安装或者远程部署里,只能存在一个版本的依赖
参考:
1、http://www.cnblogs.com/qyf404/p/4829327.html
2、http://blog.csdn.net/wangjunjun2008/article/details/11599307
3、http://zhwj184.iteye.com/blog/1528627
4、https://oolap.com/2015-10-22-use-maven-enforcer-plugin-check-deps
5、官网:http://maven.apache.org/enforcer/maven-enforcer-plugin/
关于maven的规则插件:Maven Enforcer plugin的更多相关文章
- 使用Maven的assembly插件实现自定义打包
一.背景 最近我们项目越来越多了,然后我就在想如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,我们通过使用maven的assembly插件完美的实现了该需求,爽爆了有 ...
- Maven的assembly插件实现自定义打包部署(包含依赖jar包)
微服务必备 优点: 1.可以直接导入依赖jar包 2.可以添加插件启动 .sh 文件 3.插件的配置以及微服务的统一打包方式 1.首先我们需要在pom.xml中配置maven的assembly插件 & ...
- 学习Maven之Maven Enforcer Plugin
1.Maven Enforcer plugin是什么鬼? 在说这个插件是什么前我们先思考这么一个问题:当我们开发人员进入项目组进行开发前,要准备开发环境,而领导总是会强调工具的统一,编译环境的统一.比 ...
- [转载]深入理解maven构建生命周期和各种plugin插件
我就不复制博主文章了,到原文地址看吧.写这个只是为了自己搜索起来方便些: https://blog.csdn.net/zhaojianting/article/details/80321488 htt ...
- 笔记:Maven 项目报告插件
Maven 项目报告插件,都是对于前面生成的项目站点的内容丰富,因此都是基于项目站点的,生成的命令和生成项目站点一致(mvn site),项目报告插件的配置和一般插件不同,是在 project-> ...
- Maven 项目报告插件
Maven 项目报告插件,都是对于前面生成的项目站点的内容丰富,因此都是基于项目站点的,生成的命令和生成项目站点一致(mvn site),项目报告插件的配置和一般插件不同,是在 project-> ...
- 利用maven中resources插件的copy-resources目标进行资源copy和过滤
maven用可以利用如下配置进行资源过滤,pom.xml的配置如下: <build> <!-- 主资源目录 --> <resources> <resource ...
- maven中jetty插件配置
maven中jetty插件的配置,可用于项目在内置jetty服务器中的部署. <plugin> <groupId>org.mortbay.jetty</groupId&g ...
- Maven入门指南⑦:Maven的生命周期和插件
一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周期是抽象的,其中的具体任务都交由插件来完成.Mav ...
随机推荐
- (转)Spring4.2.5+Hibernate4.3.11+Struts2.3.24整合开发
http://blog.csdn.net/yerenyuan_pku/article/details/52902851 前面我们已经学会了Spring4.2.5+Hibernate4.3.11+Str ...
- Qt setWindow setViewPort
painter.setWindow(-50, -50, 100, 100); //表示x,y坐标不变,可视的窗口移动到(-50,-50)的位置.同时在x,y方向产生factorx= (window.w ...
- final关键字所修饰的类有什么特点
Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的. final方法 ...
- How to Slove MB SD C4 Cannot Access OBD2 Port
When using china clone mb sd connect compact 4 Multiplexer, it could not link to the car computer, M ...
- 利用CWinThread实现跨线程父子MFC窗口
利用CWinThread实现跨线程父子MFC窗口 MFC对象只能由创建该对象的线程访问,而不能由其他线程访问. 不遵守该准则将导致断言(assertion)或者无法预知的程序行为等运行期错误. 在多线 ...
- HLS协议分析实现与相关开源代码
苹果定义的HLS协议,广泛运用在现在很多的流媒体服务器和客户端之间,用以传输直播电视数据流. 具体的协议参照 http://tools.ietf.org/html/draft-pa ...
- CF550 DIV3
A - Diverse Strings CodeForces - 1144A A string is called diverse if it contains consecutive (adjace ...
- IO之Object流举例
import java.io.*; public class TestObjectIO { public static void main(String args[]) throws Exceptio ...
- 【Java IO流】浅谈io,bio,nio,aio
本文转载自:http://www.cnblogs.com/doit8791/p/4951591.html 1.同步异步.阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的. 阻塞 ...
- JavaScript中的内置函数
JavaScript中的内置函数 制作人:全心全意 在使用JavaScript语言时,除了可以自定义函数之外,还可以使用JavaScript的内置函数,这些内置函数是由JavaScript语言自身提供 ...