4.使用Maven的其他问题

来源:互联网 发布:lol数据受损 编辑:程序博客网 时间:2024/04/26 19:41

一.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

0 0