Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
- 安装Maven核心程序
1:检查JAVA_HOME环境变量
在CMD窗口 输入 echo %JAVA_HOME%
返回JAVA_HOME的路径表示正确
2:安装MAVEN:解压到非中文无空格路径下
3:配置Maven的环境变量
1:MAVEN_HOME或M2_HOME (一般配置MAVEN_HOME就可以了,但是配置了M2_HOME可以避免一些奇怪的问题,所以配置M2_HOME也可以,我们配置的是M2_HOME)
M2_HOME:D:\Maven\apache-maven-3.2.2(Maven的bin目录的上一级)
path:D:\Maven\apache-maven-3.2.2\bin(Maven的bin目录)
4:新打开CMD窗口,运行 mvn -v 命令查看Maven版本
Apache Maven 3.2.2 (XXX; 2014-06-17T21:51:42+08:00)
Maven home: D:\Maven\apache-maven-3.2.2
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: D:\Java\jdk1.8.0_65\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
出现版本之后则安装成功。
5:修改Maven的Jar包目录
Maven的Jar包默认在用户[家]目录下C:\Users\Jia\.m2\repository下
修改Maven的Jar包目录:maven\conf\settings.xml
<settings>
将注释释放掉
<localRepository>/path/to/local/repo</localRepository>
改为:
<localRepository>/path/to/local/repo</localRepository>
</settings>
- Maven命令
[1]mvn clean : 清理 (删除target目录)
[2]mvn compile:编译主程序 (与src同级目录下生成target目录,target目录下有classes,存放编译的class文件)
[3]mvn test-compole (与target目录下生成test_target目录,存放编译的class文件)
[4]mvn package : 打包 (与target目录下生成XXX.jar)
[5]mvn test : 执行测试 (与target目录下生成surefire-reports目录,存放测试报告)
[6]mvn install : 安装 (将工程安装到仓库)
[7]mvn site : 生成站点 (将工程信息生成一个html,包含了工程的信息)
- POM
pom.xml是Maven的核心文件,重要程度相当于web.xml
- 坐标
Maven使用下面三个变量来定位一个工程
1:groupid : 公司域名倒序+项目名
<groupid>com.jia.maven</groupid>
2:artifactid : 模块名
<artifactid>Hello</artifactid>
3:version : 版本
<version>1.0.0<version>
4:Maven工程的坐标与仓库中路径的关系
规则:<groupid>\<artifactid>\<version>\<artifactid>+<version>
例如:
<groupid>org.springframework</groupid>
<artifactid>spring-core</artifactid>
<version>4.0.0.RELEASE<version>
路径:org\springframework\spring-core\4.0.0.RELEASE\spring-core-4.0.0.RELEASE
- 仓库
[1]本地仓库:当前电脑上部署的仓库目录
[2]远程仓库:
(1):私服:假设在当前局域网下,为当前局域网内的所有Maven工程服务
注:如果私服中找不到相应的Jar包,会自动去中央仓库寻找Jar包,下载下来
(2):中央仓库:架设在互联网上,为全世界的Maven工程服务
(3):中央仓库镜像:为了分担中央仓库的流量,提升用户的访问速度
[3]仓库中保存的内容:Maven工程
[1]Maven自身所需要的插件
[2]第三方框架Jar包
[3]我们自己开发的Maven工程
- 依赖
1:Maven解析依赖的信息时,会向本地的仓库查找被依赖的Jar
对于我们自己开发的Maven工程,在工程的根目录使用mvn install命令
将工程安装到本地仓库
2:依赖的范围:主要分析下面三种参数的范围
compile:
对主程序是否有效:有效
对测试程序是否有效:有效
是否参与打包:参与
test:
对主程序是否有效:无效
对测试程序是否有效:有效
是否参与打包:不参与
provided:此参数一般指部署过程,开发时Jar有效,部署和运行时Jar无效,由服务器提供Jar,
比如:servlet-api.jar(由Tomcat可提供)
对主程序是否有效:有效
对测试程序是否有效:有效
是否参与打包:不参与
是否参与部署:不参与
- 生命周期
1:各个构建的环节顺序不能打乱,必须按照正确的顺序来执行
2:Maven的核心程序定义了生命周期,由各个插件来执行
3:Maven核心程序为了更好的实现自动化构建,按照下面特点执行的生命周期的各个阶段:不论执行执行生命周期的哪个阶段,都会从生命周期的最初位置开始执行。
4:插件和目标:生命周期的各个阶段仅仅定义了要执行的任务,各个阶段和插件的目标是对应的,相似的目标由特定的插件来完成。
5:可以将目标看作调用插件功能的命令。
- 在Eclipse中设置Maven
Window -> Preferences -> MyEclipse -> Maven4MyEclipse
1:Installations中Add Maven的安装目录
2:User Settings 设置Maven/conf/settings文件的目录
- 构建工程,JDK默认为1.5版本,如何永久的设置jdk为1.7版本呢?
全局的jdk,在setting.xml文件中的profiles元素下添加如下profile元素
<profile>
<id>jdk-1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
- Eclipse中执行Maven命令
点击工程中的pom.xml右键 -> Run As
- 如何添加Maven命令
点击工程中的pom.xml右键 -> Run As ->Build... ->在Goals栏中填写要添加的Maven命令
(例如填写:compile 编译命令)
- 聚合工程
<!--
假设有Person父工程, project、project1、project2为子工程
那么只需要在Person父工程pom.xml配置如下即可
注:Person父工程pom.xml中
<packaging>pom</packaging>
packaging必须为pom
-->
<modules>
<module>../project</module>
<module>../project1</module>
<module>../project2</module>
</modules>