maven 详情查考 maven实战 许晓斌
maven是一个构建和管理jar包工具.
管理jar:
通过坐标来定义一个jar
示例
<project> <!-- model version is always 4.0.0 for Maven 2.x POMs --> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <!--组织ID 一般和src/main/java和src/test/java 下面的包名称对应--> <artifactId>my-app</artifactId> <!--项目标识符 -->
<version>1.0</version> 版本号
<packageing>pom</packageing> 打包方式jar war pom pom为聚合文件
<dependencies> 依赖集合
<dependency> 每一个依赖
<groupId>junit</groupId> 依赖的坐标
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope> 依赖的范围 (test,compile,provide,runtime,import) 默认compile test(测试有效 junit) provide(编译和测试有效 servletapi) runtime(运行有效 常见 jdbc驱动) import(dependencymanagement标签下使用导入pom文件)
<option>true<option> jar可选 这个标签标识依赖不会传递 如果其它包依赖这个包,必须单独引入
</dependency>
</dependencies>
</project>
maven的依赖选择 假设 A->B->C A依赖B,B依赖于C 当我们引入A的时候,maven自动引入B和C 当出现依赖冲突的时候.maven首先选择最短的依赖路径,如果还有冲突,maven选择pom文件首先出现的依赖路径
当我们发现依赖冲突的时候可以使用,或者想使用莫一个特定版本的jar 的时候 <exclude>标签排除依赖,而后自己声明所需要版本
当项目依赖引入完毕后,使用mvn dependency list 命令查看maven的完整依赖图.优化自己的pom(也可以使用开发工具自带的)
构建: 通过maven命令
maven有三个生命周期 分别是clean default site
clean 清理项目
default : 常用的有compile test package install deploy 顺序执行.执行后面的会先执行前面的
site:生成文档
maven的聚合和继承:通过<parent>标签可以继承pom文件,重复引入去除
通过<modules>标签可以聚合pom文件,几个不同的项目可以同时构建
maven的测试: maven会自动识别src/test/java 目录下以Test或Test结尾的java类,进行测试.