maven的前身
- make:最原始的构建工具,不能跨平台
- ant:曾经没有maven的时候,流行过一段时间,但是手工配置的语法繁琐,而且需要一次又一次的重复,另外依赖管理还要借助ivy来完成,工作量还是有点大。。。
- maven:自动化。。。,目前是最有影响力的工程管理工具
- gradle:google发布,不再基于xml来进行配置,而是基于DSL语言来进行构建管理,语法功能更加强大,android这块用的较多,同时国外一些开源项目,比如spring也开始用gradle来管理,国内也有少数公司在尝试使用
- 说句实话:未来也许是maven和gradle并存的一个事情,但是近几年,主要还是maven
1.阿里镜像仓库
为了加快速度,在settings.xml中加一段配置,用国内阿里云的镜像仓库去下载各种东西
<mirror><id>nexus-aliyun</id><mirrorOf>*</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
`
`
2.maven的约定
这就是基本的maven工程目录结构,其中src/main/java目录包含了这个项目的java源码,src/test/java目录包含了测试代码,pom.xml文件是maven的核心配置文件,是这个项目的Project Object Model。
3.pom.xml初步介绍
pom.xml文件是一个项目最核心的maven配置文件,包含了大量的信息,maven正是基于这里的配置信息来对工程进行构建等管理工作。一个最最基本的pom.xml文件如maven生成的pom.xml所示。
<project>:pom.xml中的顶层元素<modelVersion>:POM本身的版本号,一般很少变化<groupId>:创建这个项目的公司或者组织,一般用公司网站后缀,比如com.company,或者cn.company,或者org.zhonghuashishan<artifactId>:这个项目的唯一标识,一般生成的jar包名称,会是<artifactId>-<version>.<extension>这个格式,比如说myapp-1.0.jar<packaging>:要用的打包类型,比如jar,war,等等。<version>:这个项目的版本号<name>:这个项目用于展示的名称,一般在生成文档的时候使用<url>:这是这个项目的文档能下载的站点url,一般用于生成文档<description>:用于项目的描述
4.maven坐标
每个maven项目都有一个坐标
- groupId + artifactId + version + packaging + classifier,五个维度的坐标,唯一定位一个依赖包
- 任何一个项目,都是用这五个维度唯一定位一个发布包
- 实际上后面两个维度较为少用,99%的场景下,唯一定位一个依赖的就是三个维度,groupId + artifactId + version
groupId
组织
不是你的公司或者组织,但是以你的公司或者组织的官网的域名倒序来开头,然后加上项目名称
你现在在百度公司,www.baidu.com比如你要做oa系统最终com.baidu.oa
artifactId
可以叫做:项目中的某个模块,或者某个服务
com.baidu.oa,oa-organ服务 com.baidu.oa,oa-auth服务 com.baidu.oa,oa-flow服务
packaging
这个工程的发布包打包方式,一般常用的就jar和war两种,java -cp执行一个jar包,war可以放到一个tomcat容器里去跑的web工程
classifier
很少用,定义某个工程的附属项目,比如hello-world工程的,hello-world-source工程,就是源码,可能是类似于hello-world-1.0-SNAPSHOT-source.jar这样的东西。
