前言:背景介绍
-
Maven是什么?
如果没有Maven,你可能不得不经历下面的过程:
-
如果使用了spring,去spring的官网下载jar包;如果使用hibernate,去hibernate的官网下载Jar包;如果使用Log4j,去log4j的官网下载jar包.....
-
当某些jar包有依赖的时候,还要去下载对应的依赖jar包
-
当jar包依赖有冲突时,不得不一个一个的排查
-
执行构建时,需要使用ant写出很多重复的任务代码
-
当新人加入开发时,需要拷贝大量的jar包,然后重复进行构建
-
当进行测试时,需要一个一个的运行....检查
有了Maven,它提供了三种功能:
-
依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包。
-
项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布...
-
项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等
Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目对象模型(POM,Project-Object-Model),这是整个Maven系统的基本单元。
2、Maven如何管理jar包
关于jar包的坐标, maven是通过groupId,artifactId,以及version确定一个唯一的jar包。
例如,最常使用的Junit的声明就是如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
首先先来说说Maven下载jar包的过程:
在Maven中会涉及到几种仓库:
-
工作空间,即我们的项目工程,这里面可能会放着pom.xml文件,这个pom.xml就是maven的配置文件
-
本地仓库,本地仓库用于存放jar包,其实Jar包并不是直接放入工作空间的,它是存放在本地仓库。默认的文件夹是 ".m2" 目录。,然后在执行发布打包的时候,添加依赖路径
-
私库:私库是使用者自己搭建的maven仓库,用于缓解频繁从外网下载jar包资源的压力。而且使用私库作为缓存层,也相对安全一些。(一般公司都会有自己的Maven私服(采用Nexus搭建),它会与中央仓库进行index同步)
-
共享仓库:Maven中央仓库或者一些常用的镜像网站都属于这。Maven中央存储库 https://repo1.maven.org/maven2/ (查询三方组件时可用https://search.maven.org)
3、Apache Maven 是做什么用的?
Maven 是一个项目管理和构建自动化工具。但是对于我们
程序员来说,我们最关心的是它的项目构建功能。Maven 使用约定优于配置的原则 。它要求在没有定制之前,所有的项目都有如下的结构:
${basedir}
存放 pom.xml和所有的子目录
${basedir}/src/main/java
项目的 java源代码
${basedir}/src/main/resources
项目的资源配置,比如说 property文件
${basedir}/src/test/java
项目的测试类,比如说 JUnit代码
${basedir}/src/test/resources
测试使用的资源
一个 maven 项目在默认情况下会产生 JAR 文件(也可配置生成war等),另外 ,编译后 的 classes 会放在 ${basedir}/target/classes 下面, JAR 文件会放在 ${basedir}/target 下面。
-
Maven基本操作
一些基本的操作,编译,构建,单元测试,安装,网站生成和基于Maven部署项目。
使用Maven构建项目
"mvn clean package" 来构建项目
使用Maven清理项目
"mvn clean" 来清理项目
使用Maven运行单元测试
"mvn clean test" 来执行单元测试
将项目安装到Maven本地资源库
"mvn install" 打包和部署项目到本地资源库
生成基于Maven的项目文档站点
"mvn site" 来为您的项目生成信息文档站点
使用"mvn site-deploy"部署站点(WebDAV例子)
"mvn site-deploy" 通过WebDAV部署自动生成的文档站点到服务器
部署基于Maven的war文件到Tomcat (一般结合jenkins使用)
"mvn tomcat:deploy" 以 WAR 文件部署到 Tomcat
参考学习网站推荐:
http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html
http://www.cnblogs.com/xing901022/p/5024357.html
学习书籍PDF推荐:https://pan.baidu.com/s/1gdu1rDD
一、环境准备:Maven,Eclipse-Maven-Plugin
-
Maven下载: http://maven.apache.org/download.cgi ,解压即可。然后配置M2_HOME以及Path环境变量。Maven默认下载的jar包放在用户目录下的 .m2目录(注意windows默认当成隐藏目录). 测试:打开cmd输入mvn –v看是否安装成功
%M2_HOME%\bin
-
Eclipse-Maven-Plugin:在高版本Eclipse中其实内置了Maven插件
(此处低版本maven可选)然后在Window->Preference->Java->Installed JREs->Edit
在Default VM arguments中设置
-Dmaven.multiModuleProjectDirectory=$M2_HOME
然后配置maven取消勾选下载远程索引
二、Maven的生命周期与阶段
理解Maven核心概念博客:
http://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html
官方文档部分: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
https://maven.apache.org/ref/3.3.9/maven-core/lifecycles.html
Maven中有三大生命周期,他们相互独立,分别是:
1 clean 清理
2 default 构建
3 site 建站
一般来说,clean和default比较常用。
每个生命周期又有不同的阶段,阶段按顺序执行,并且可以指定执行结束的阶段。构建的时候,会依次从最上面的阶段执行到指定的那个阶段。
比如,clean有3个阶段:
1 pre-clean 执行清理前要完成的工作
2 clean 清理上一次构建生成的文件
3 post-clean 执行清理后需要完成的工作