Maven用了半年多了,现在基本的使用已经可以了,在这里进行一个总结,加深印象,同时帮助小白快速上手Maven
一、什么是Maven?
Maven是一个项目构建工具,能把项目抽象成一个POM(project object model),使用POM文件对项目进行构建、打包、文档化等操作。最重要的是解决了项目依赖的问题,简化项目环境搭建的过程;
二、为什么用Maven?
Maven最核心的功能:解决复杂项目依赖的问题。怎么说?比如说你在项目中需要用到第三方jar包(如Mysql驱动),去哪找呢。如果一个还好,到一个复杂的项目通常由几十甚至上百个依赖组成,一个一个找怕不是累死?而Maven就解决了这个问题,比如Mysql驱动,只需要加入下面这一句即可:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
是不是很方便?
另一方面,项目的测试、打包、部署等操作,Maven也进行了简化,同时对项目的结构有了统一的规范和约定,如源码统一存放在src/main/java下,测试代码统一存放在src/test/java下,资源文件统一存放在src/resources下,编译后字节码存放在target目录下等等。
一句话,Maven让技术人员能够专注在业务逻辑上,极大提高了开发效率;
三、我的jar都是哪来的?
依赖仓库有多种,位于Apache的中心仓库http://mvnrepository.com/,柜内外也有大量镜像库,如阿里云的Maven仓库,会与中心仓库进行同步;同时可以创建公司私库,用来发布和存放库以提高下载速度或存放公司私有的jar便于统一管理;
无论依赖的jar来自哪个仓库,在开发人员本地,Maven都会创建一个本地仓库用于缓存已经下载的jar,避免每次从仓库下载,默认地址为用户文件夹下的.m2隐藏文件夹中。
四、Maven配置
Maven最核心的是pom.xml,使用xml方式描述项目模型,pom通常有以下元素:
groupId:表示项目所属的组,通常是一个公司或组织的名称,如:org.springframework;
artifactId:项目唯一标识,如mysql-connector-java;
packaging:项目打包方式,通常有war和jar两种;
version:项目版本号;
注:
通常来说,项目版本号分为三段,主版本号.次版本号.修订版本号。主版本号变动代表架构变动或不兼容实现,次版本号是兼容性修改、功能增强,修订版本号则是bug修复。版本后缀意味着不同的项目阶段,SNAPSHOT表示正在开发中的版本,会修复bug和添加新的功能;RELEASE表示一个正式的版本,中间可能还有M1,M2(M代表里程碑,即将发布)、RC(Release Candidate,发布候选)、GA(General Availiable,基本可用版本)等表示即将发布前的各个过程。SNAPSHOT<M1<M2<...<RC<GA<RELEASE
modelVersion:pom的Maven版本,目前是4.0.0;
dependencies:此元素下包含多个dependency,用来声明项目依赖,是pom中最核心的部分;
dependency:包含在dependencies中,用来声明项目依赖
dependency所包含的元素如下:
groupId、artifactId、version这三个与上面描述相同,不再赘述;
scope:代表此类库与本项目的关系,默认是compile,也就是编译打包都需要此类库;test表示尽仅在单元测试的时候需要;provided表示编译阶段需要此类库,带打包阶段不需要,因为项目环境中已经提供了;runtime表示编译和打包的时候都不需要,但运行的时候需要,如mysql驱动包;
optional:true/false,默认false,激活时代表该依赖仅在本项目中使用,子项目需要时需要重新写入该依赖;
bulid:此项在pom中可选,bulid包含了多个插件plugin用来辅助项目构建。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
早期Maven默认的Java版本是1.6,此处显式声明使用Java1.8编译,源代码使用的是UTF-8
五、其他:
关于Maven的安装、环境变量配置、阿里云镜像切换,IDE集成网上有很多资源,这里不再赘述;
网友评论