Maven快速入门
Maven是Java中最为普及的包管理工具,在实际项目中由于依赖的各类jar包非常多,因此概念清晰的处理好各类Jar依赖显得非常重要,接下来通过基础知识,Jar包主要分类方式和进阶知识来介绍。
基础知识
Maven使用起来非常方便,配置卸载setting.xml中,如果是自己本地开发,推荐直接使用如下配置。
常见命令
| 命令 | 诠释 |
|---|---|
| mvn package | 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件 |
| mvn tomcat7:run | 运行项目于tomcat[jetty等server也OK]上 |
| mvn compile | 编译 |
| mvn test | 编译并测试 |
| mvn deploy -Dmaven.test.skip=true | 发布 |
| mvn clean | 清空生成的文件 |
| mvn install -X | 想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行 |
| Tip: 对于community版本的Idea就需要借助maven命令来启动tomcat容器。 | |
| 此外生产环境,有时会指定特殊版本的jar,因此需要使用systemscope,如下所示 |
Maven的Scope
| 名称 | 诠释 |
|---|---|
| compile | 编译范围,默认的范围 |
| provided | 已提供范围,比如有些web相关jar,tomcat中有,但本地没有时使用 |
| runtime | 运行时范围,比如编译时只需要slf4j-api,运行时才需要具体的实现jar |
| test | 测试范围,例如junit,spring-test |
依赖库分类
在java项目中,通常我们将所有的库归类为三种:
一方库:指当前项目中各模块间的相互依赖,其中每个模块都可以定义为该工程的一方库。(工程范围内)
二方库:指当前公司内部jar包间的相互依赖,公司内部除了当前工程之外的jar及依赖都可以定义为该工程的二方库。(公司范围内)
三方库:指公司之外的开源库, 比如apache、google、spring等第三方提供的jar及依赖。
进阶知识
项目中经常遇到jar包冲突的问题,通常的都是遇到冲突后再去检查,很被动。即使是通过 mvn dependency:tree -Dverbose 也只能是从jar层面自己分析是否有冲突。如何提前检测,如何准确定位到具体类在哪个jar包中存在冲突,这才是解决问题的根本。现推荐一款maven插件可以具体定位到哪些类有冲突,在哪些jar包中有冲突。
使用方法
在pom.xml文件build标签中添加如下代码(根据自己代码视情况添加)
之后在对应项目根目录执行一下maven命令:mvn enforcer:enforce。冲突较多单屏无法显示完整时可以重定向到某文件中,如下:mvn enforcer:enforce > conflict.txt。其中Duplicate classes显示的是重复的类,Found in显示的是重复的类所在的jar包。此外,可以通过添加VM参数-verbose:class可显示每个文件加载自哪个jar包。
附上一个基础的Maven文件Demo
<jsp.version>2.3.1</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>3.1.0</servlet.version>
出 处:http://www.cnblogs.com/xiong2ge/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
浙公网安备 33010602011771号