maven最初用于代替apache ant,用来简化项目构建。ant构建项目采用的是指令方式,比如,构建项目的源码编译部分,ant提供了javac指令,以及一系列属性,包括源代码路径、依赖库的路径等。打包项目,比如打成war包的时候,有提供了war指令和附带的一系列属性,如编译好的class的目录等。
1.使构建项目变得很容易,maven屏蔽了构建的复杂过程。比如,你只需要输入maven package 就可以构建整个java项目。
2.maven的核心是pom.xml,用xml方式描述了项目模型,pom通常有以下元素。
1.groupId:表示项目所属的组,通常是一个公司或组织的名称,如org.springframework.
2.artifactId:项目唯一的标识,比如,有spring-boot-starter-web、spring-boot-devetools、groupId和artifactId能唯一标识一个项目或者一个库,我们通常称之为项目坐标。
3.packagin:项目的类型,常用的有jar和war两种,jar表示项目后打包成一个jar包,这是springboot的默认使用方式。
4.version:项目的版本号,比如0.0.1-SNAPSHOT、1.5.2.RELEASE。
通常来说,项目版本号分三段,主版本号.此版本号,修订版本号。主版本号变动代表架构变动或者不兼容实现,次版本号是兼容性修改、功能增强,修订版本号则是bug修复。
版本的后缀意味着项目的不同阶段,SHAPSHOT表示开发中的版本,会修复bug和添加新功能;RELEASE表示的是一个正式发布版,中间还有可能有M1、M2(M指里程碑,即将发布)、RC(Release Candidate,发布候选)、GA(general availability,基本可用版本)等表示即将发布前的各个过程,SNAPSHOT<m1<m2.............<RC<GA<Realease。
modelVersion:代表pom文件的maven的版本,如本书写作的时候maven的modelVersion是4.0.0.
dependencies:此元素下包含了多个dependency,用来声明项目的依赖,这是pom最核心的部分。
dependency:包含在dependencies中,用来声明项目的依赖,比如项目用到的mysql驱动。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.5</version>
<scope>provided</scope>
</dependency>