##一.Maven的传递性依赖及调节##
如果一个工程依赖一个java构件A,而这个java构件A同时依赖另外一个构件B。这样,当工程pom.xml中配置了A时,Maven会自动将B也作为工程的依赖添加进来。如果工程依赖的构件比较多,就会像引入B这样引入许多其他的构件;或者类似引入B的构件系统并不需要,这就可能会对系统构建过程造成冲突和负担。引起这种现象的归根结底就是Maven的传递性依赖引起的。
这种现象会造成上面所述的麻烦,但也可以带来很多方便。类似的现象很多。比如工程配置依赖spring-aop,则Maven会自动依赖spring-core,因为spring-aop模块要想运行,必须依赖spring-core。
我们这里的调节主要是为了处理上面所述的麻烦。下面通过示例说明。
比如,现在引入spring-oxm,maven会自动引入commons-lang,而工程又不需要commons-lang包,或者前面已经引入新版的commons-lang包,这时可以,在dependency节点中添加exclusions节点,如下图所示。Exclusion节点只需要写上groupId和artifactId两个坐标,不需要version坐标。
经过以上的配置,maven就不会自动引入commons-lang包。
##二.构件的搜索##
Maven组织建立了Maven中央库,并定义了相关开源组件的坐标。同时,有些网站提供了maven坐标的搜索功能。可以搜索后直接复制添加到需要的pom.xml文件中。
特别需要提醒的是,不是所有的构件都能在中央库找到,比如有些代码是闭源的,像Oracle的JDBC包,就是这种类型;比如有些开源构建已经过期,所以中央库不再保存相应的构件及其坐标。
以下列出了常用的几个maven搜索网站:
- http://www.mvnrepository.com/
- http://repository.sonatype.org
- http://www.mvnbrowser.com/
##三.Maven常用命令## - mvn -version/-v 显示版本信息
- mvn package 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
- mvn compile 编译
- mvn test 编译并测试
- mvn clean 清空生成的文件
- mvn install 在本地 Repository 中安装 jar
- mvn validate 验证工程是否正确,所有需要的资源是否可用。
- mvn test-compile 编译项目测试代码。
Maven命令也可以组合使用
比如,mvn clean install 先删除再编译
注意:上面命令是在命令提示符界面下运行的情况,如果是在eclipse中运行,省略“mvn”。
##四.参考资料##
(一)环境搭建http://blog.csdn.net/jolingogo/article/details/8775046
(二)安装m2eclipse插件http://blog.csdn.net/jolingogo/article/details/8796410
(三)使用Maven构建Web项目http://blog.csdn.net/jolingogo/article/details/8796726
(四)使用Maven构建Web项目-测试http://blog.csdn.net/jolingogo/article/details/8797153
(五)使用Maven构建Struts2项目http://blog.csdn.net/jolingogo/article/details/8798052
(六)构建Hibernate项目http://blog.csdn.net/jolingogo/article/details/8798684
(七)构建Spring项目http://blog.csdn.net/jolingogo/article/details/8799307
(八)构建MyBatis项目http://blog.csdn.net/jolingogo/article/details/8801158
(九)构建SSH项目http://blog.csdn.net/jolingogo/article/details/8811817
(十)阶段小结http://blog.csdn.net/jolingogo/article/details/8821375