定义
Ø Maven是一个项目管理工具,它包含了:
Ø 一个项目对象模型 (Project Object Model),
Ø 一组标准集合,
Ø 一个项目生命周期(Project Lifecycle),
Ø 一个依赖管理系统(Dependency Management System),
Ø 用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
与ant对比
Ant是构建工具 ,仅关注预处理,编译,打包,测试和分发。
Maven是项目管理工具,除了构建外,还能:
Ø 运行报告
Ø 生成站点
Ø 标准化,便于项目成员之间交流,知识积累
Ø 高度重用
下载与安装
3.1 准备
下载地址:http://maven.apache.org/download.cgi,当前最新版本为 3.2.1
检查JDK是否安装,如果没安装则先安装JDK。
3.2 安装
a. 将Maven解压到指定目录(如:F:\ICS\apache-maven-3.0.5-bin\apache-maven-3.0.5)。
b. 配置环境变量:在系统变量中新建一个变量,变量名为M2_HOME,值为F:\ICS\apache-maven-3.0.5-bin\apache-maven-3.0.5在系统变量中找到一个名为Path的变量,在变量值的末尾加上%M2_HOME%\bin;
3.3 检查是否安装成功
在cmd中输入命令mvn –version,如下图展示出Maven的信息则说明安装成功。
3.4 修改本地仓库的位置
打开全局配置文件,%M2_HOME%\conf\settings.xml,<localRepository>{本地仓库路径}</localRepository>。
3.5 与Eclipse集成
新版本的Eclipse中已经做了集成, 如果你的Eclipse下Window——>Preferences里面没有Maven选项,需要手动去集成。
启动Eclipse之后,在菜单栏中选择Help,然后选择Install New Software…,接着你会看到一个Install对话框,点击Work with:字段边上的Add按钮,你会得到一个新的Add Repository对话框,在Name字段中输入m2e,Location字段中输入http://m2eclipse.sonatype.org/sites/m2e,然后点击OK。
Maven中的核心概念
4.1 生命周期(LifeCycle)
Maven有三套独立的生命周期,它们分别是clean , default, site
1) clean 生命周期是用于清理项目 (默认是删除了target文件夹)
2) default 生命周期是用于构建项目
3) site 生命周期是是用于建立项目站点
4.2 Clean中的阶段(Phase)
pre-clean 清理之前的准备 clean 进行清理工作,通常是清理掉target文件夹√ post-clean 清理之后的准备工作 4.3 Default中的阶段(Phase)
4.3 Site中的阶段(Phase)
pre-site, site, post-site, site-deploy
4.4 依赖管理
4.4.1 坐标
1) groupId:当前项目隶属的实际项目。
2) artifactId:所属模块。
3)version:版本号
4)packaging:打包方式
4.4.2 Scope: 什么时候加入到classpath中。
4.4.3 依赖具有传递性。
4.5 仓库
4.5.1 本地仓库:localRepository
4.5.2 远程仓库:
1)中央仓库:中央仓库是默认的远程仓库,如果不做任何特殊配置那么将会从中央仓库下载依赖,这在$M2_HOME/lib/maven-model-builder-3.0.4.jar里的org/apache/maven/model/pom-4.0.0.xml里做了指定。
2)其他远程仓库:如Jboss远程仓库
3)镜像
4)私服
4.6 插件与目标:一个插件可以执行多个目标,根据不同的工程packing类型在各个phase中默认绑定了一些goal。下面是一个使用mybatis-generator-maven-plug自动生成代码插件的配置方法。
4.7 POM文件(项目对象模型),主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。示例:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.chinasofti.rcloud</groupId> <artifactId>rabbitmq-client</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.4.0</version> </dependency> </dependencies> </project>
创建Maven工程
6.1 命令创建
1) 创建简单maven项目
mvn archetype:create -DgroupId=com.chinasofti.rcloud -DartifactId=RCloud2)创建maven web项目
mvn archetype:create -DgroupId=com.chinasofti.rcloud -DartifactId=RCloudWeb -DarchetypeArtifactId=maven-archetype-webapp6.2 Eclipse创建
New à Other… à Maven Project,选择Archetype:如果是普通项目可以选择maven-archetype-quickstart; 如果是web项目可以选择maven-archetype-webapp.
私服nexus
7.1 下载及安装
参考网站http://www.sonatype.org/nexus/go
访问地址http://localhost:8081/nexus 进入. 默认用户名密码为admin/admin123.
7.2 从私服下载jar包
修改settings.xml
<profile>
<id>dev</id>
<repositories>
<repository>
<id>local-nexus</id>
<url>http://host:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
7.3 分发构件至私服
1) 在pom.xml中加入
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Releases Repository</name>
<url>http://IP:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshots Repository</name>
<url>http://IP:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>2) 在settings.xml中加入
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>其他
推荐书籍《Maven实战》
挑战者gradle