项目管理工具Maven
文章目录
- 项目管理工具Maven
- Maven的好处
- 仓库
- Maven常用命令
- Maven的坐标的主要组成及书写规范
- 添加坐标
- Maven 特点
- 依赖传递
- Maven中的继承
- Maven的jar包冲突
- 生命周期Maven存在三套
- 1、clean生命周期:清理项目,包含三个phase(阶段)。
- 2、default生命周期:构建项目
- 3、site生命周期:建立和发布项目站点
Maven的好处
依赖管理:maven对项目中jar包的管理过程。传统工程我们直接把jar包放置在项目中。
maven工程真正的jar包放置在仓库中,项目中只用放置jar包的坐标。
一键构建:maven自身集成了tomcat插件,可以对项目进行编译,测试,打包,安装,发布等操作
- 节省磁盘空间
- 可以一键构建
- 可以跨平台
- 应用在大型项目时可以提高开发效率
仓库
- 本地仓库
- 远程仓库(私服)
- 中央仓库
仓库之间的关系:当我们启动一个maven工程的时候,maven工程会通过pom文件中jar包的坐标去本地仓库找对默认情况下,如果本地仓库没有对应jar包,maven工程会自动去中央仓库下载jar包到本地,在公司中,如果本地没有对应jar包,会先从私服下载jar包,如果私服没有iar包,可以从中央仓库下载,也可以从本地上传。
Maven常用命令
命令 | 解释 |
mvn package | 打包发布 |
mvn clean | 清理(删除target目录下编译内容),可以配合相应命令一起使用,如mvn clean package, mvn clean test |
mvn install | 打包后将其安装在本地仓库,然后提供其他项目设置依赖引入 |
mvn build | 重新对该maven项目进行打包 |
mvn deploy | 将打包的文件发布到远程(如服务器)参考,提供其他人员进行下载依赖 |
mvn compile | 编译项目,该命令可以对src/main/java目录的下的代码进行编译 |
mvn test | 测试命令,或执行src/test/java/下所有junit的测试用例 |
Maven的坐标的主要组成及书写规范
坐标 | 解释 |
groupId | 定义当前的Maven项目属于哪个项目,公司或组织域名的倒序 |
artifactId | 项目名或模块名,定义实际项目中的某一个模块 |
version | 定义当前项目的当前版本 |
package | 定义当前项目的打包方式 |
添加坐标
- 在本地仓库中搜索
- 互联网上搜,推荐网址 http://www.mvnrepository.com/
Maven 特点
依赖传递
在Maven中,依赖是可以传递的,就是说假设存在三个项目,分别是项目A,项目B以及项目C,假设C依赖于B,B依赖于A,那么我们可以根据Maven项目依赖的特征不难推出项目C也依赖于A。
Maven中的继承
在Maven中,子项目是可以继承父项目中的依赖的,比如说我们有一个父项目maven-parent
,该父项目拥有一个子项目A,如果在父项目中依赖了junit
,那么在子项目A中即便是没有引入junit
,在子项目中仍然能够使用junit
,因为子项目天然继承了父项目中的junit
依赖。
Maven的jar包冲突
直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。
传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中解决jar包冲实的方式:
- 声明者优先原则: 哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。
先声明的jar包坐标下的依赖包,可以优先进入项目中。 - 路径近者优先原则: 直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的jar包
- 直接排除依赖: jar包下依赖包,在配置exclusions标签的时侯,内部可以不写版本号。
因为此时依赖包使用的版本和默认和本jar包一样。如例子:
<exclusions>
<exclusion>
<group Id>org. springframework</group Id>
<artifactId spring-core</artifactId)
</exclusion>
</exclusions>
生命周期Maven存在三套
每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
1、clean生命周期:清理项目,包含三个phase(阶段)。
- pre-clean:执行清理前需要完成的工作
- clean:清理上一次构建生成的文件
- post-clean:执行清理后需要完成的工作
2、default生命周期:构建项目
- validate:验证工程是否正确,所有需要的资源是否可用。
- compile:编译项目的源代码。
- test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
- Package:把已编译的代码打包成可发布的格式,比如jar。
- integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
- verify:运行所有检查,验证包是否有效且达到质量标准。
- install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
- Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
3、site生命周期:建立和发布项目站点
- pre-site:生成项目站点之前需要完成的工作
- site:生成项目站点文档
- post-site:生成项目站点之后需要完成的工作
- site-deploy:将项目站点发布到服务器