前言
部门现在的项目中都是使用Ant来进行项目发布,没有使用过Maven,只知道其名声很大,其作用是用来管理jar 包的。前段时间帮其他部门分析问题看到他们已经使用Maven来管理项目,所以决定还是学习一下,为将来新项目使用Maven打好基础。
简介
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理软件。
由来
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
原理
在工作当中,我们经常会建立多个项目或工程,而这些项目的依赖多是重复的,每次建立工程导入依赖都会很痛苦,Maven提供了一个统一的位置存储所有项目的共享的Jars,这个地方即是仓库。Maven通过groupId(组标识,全球唯一,一般为包前缀)、artifactId(构件ID)、version(版本号)快速的定位Jar并对其进行管理。
仓库分为本地仓库和远程仓库两大类。其中远程仓库又分为私服、中央仓库、其他公共库。Maven在寻找Jar包时会先从本地仓库中寻找,如果本地仓库没有该Jar包,则会从远程仓库下载Jar包到本地仓库。
安装
在Maven官网(https://maven.apache.org/download.cgi)下载压缩包并解压。
设置M2_HOME环境变量,路径为Maven的根目录。最好也设置MAVEN_HOME,早期的一些项目是使用的该变量。在path变量中添加bin目录路径。
第一个项目
进入到一个目录中,在终端中输入命令并执行。
mvn archetype:generate -DgroupId=cn.com.demo -DartifactId=myDemo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
命令执行完毕后,原目录下将会出现myDemo目录,我们的第一个项目已经生成了。
目录结构如下:
├───src
│ ├───main
│ │ └───java
│ │ └───resource
│ └───test
│ └───java
│ └───resource
├───target
└───pom.xml
maven项目采用“约定优于配置”的原则,src/main约定用于存放源代码,src/main用于存放单元测试代码,src/target用于存放编译、打包后的输出文件。这是全世界maven项目的通用约定,请记住这些固定的目录结构。