什么是Maven
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
Maven主要有两个功能:
1、项目构建
2、依赖管理
构建过程:
项目构建方式:
1、Eclipse
手工操作较多,项目的构建过程都是独立的,很难一步完成。比如:编译、测试、部署等。
开发时每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错
2、Ant
Ant只是一个项目构建工具,它没有集成依赖管理。
Ant在进行项目构建时,它没有对项目目录结构进行约定,需要手动指定源文件、类文件等目录地址。同时它执行task时,需要显示指定依赖的task,这样会造成大量的代码重复。
3、Maven
Maven不仅是一个项目构建工具,更是一个项目管理工具。它在项目构建工程中,比ant更全面,更灵活。
Maven在进行项目构建时,它对项目目录结构拥有约定,知道你的源代码在哪里,类文件应该放到哪里去。它拥有生命周期的概念,maven的生命周期是有顺序的,在执行后面的生命周期的任务时,不需要显示的配置前面任务的生命周期。例如执行mvn install 就可以自动执行编译,测试,打包等构建过程
Mave的安装配置:
官方网站:http://maven.apache.org
Maven是使用java开发,需要安装jdk1.6以上,推荐使用1.7
Maven的安装:
第一步:安装jdk,要求1.6或以上版本。
第二步:把maven解压缩,解压目录最好不要有中文。
第三步:配置环境变量MAVEN_HOME
第四步:配置环境变量PATH,将%MAVEN_HOME%\bin加入Path中,在Windows中一定要注意要用分号;与其他值隔开。
第五步:验证是否安装成功,打开cmd窗口,输入mvn–v
如图:
Maven的配置:
Maven有两个settings.xml配置文件,一个是全局配置文件,一个是用户配置文件.
1:全局配置(默认)
%MAVEN_HOME%/conf/settings.xml是maven全局的配置文件。
该配置文件中配置了本地仓库的路径,默认就是:/.m2/repository。其中表示当前用户路径C:\Users[UserName]。
localRepository:用户仓库,用于检索依赖包路径
2:用户配置
~/.m2/settings.xml是用户的配置文件(默认没有该文件,需要将全局配置文件拷贝过来在进行修改)
注意:一般本地仓库的地址不使用默认配置,通常情况下需要在用户配置中,配置新的仓库地址。
配置步骤如下:
第一步:创建一个本地仓库目录,比如E:\08-repo\0707\repository。
第二步:复制maven的全局配置文件到~/.m2目录下,即创建用户配置文件
第三步:修改maven的用户配置文件。
注意:
用户级别的仓库在全局配置中一旦设置,全局配置将不再生效,转用用户所设置的仓库,否则使用全局配置文件中的默认路径仓库。(一般情况下可以使用全局配置,所谓的用户配置就是将默认的路径仓库给换了一个位置存储)
Maven的工程结构:
Project
|-src
| |-main
| | |-java ——存放项目的.java文件
| | |-resources ——存放项目资源文件,如spring, hibernate配置文件
| |-test
| |-java ——存放所有测试.java文件,如JUnit测试类
| |-resources ——测试资源文件
|-target ——目标文件输出位置例如.class、.jar、.war文件
|-pom.xml ——maven项目核心配置文件
Maven的命令:
Mvn compile 命令
执行mvn compile命令,完成编译操作; 执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。
Mvn clean 命令
执行mvnclean命令; 执行完毕后,会将target目录删除。
Mvn test 命令
执行mvn test命令,完成单元测试操作; 执行完毕后,会在target目录中生成三个文件夹:surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件)。
Mvn package 命令
执行mvn package命令,完成打包操作 ; 执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war。
Mvn install 命令
执行mvn install命令,完成将打好的jar包安装到本地仓库的操作; 执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用。
mvn clean compile 命令
cmd中录入mvn clean compile命令; 组合指令,先执行clean,再执行compile,通常应用于上线前执行,清除测试类。
mvn clean test 命令
cmd中录入mvn clean test命令; 组合指令,先执行clean,再执行test,通常应用于测试环节。
mvn clean package 命令
cmd中录入mvn clean package命令; 组合指令,先执行clean,再执行package,将项目打包,通常应用于发布前
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包。
mvn clean install 命令
cmd中录入mvn clean install 查看仓库,当前项目被发布到仓库中; 组合指令,先执行clean,再执行install,将项目打包,通常应用于发布前。
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包
部署————将打好的包发布到资源仓库中。
M2Eclipse是eclipse中的maven插件。
安装配置M2Eclipse插件
(1):查看eclipse中是否包含Maven插件
注:高版本的eclipse中一般都包含Maven插件
(2):设置自己的Maven安装目录
注:此处设置自己的安装目录,也可以使用默认的
(3):设置Maven用户配置
注:这里所设置的Maven用户配置路径,是需要自己手动设置的路径,当然也可以使用eclipse默认的路径,进行存储.
创建Maven工程的方式 一般分为两种,通过骨架创建和不通过骨架创建.
通过骨架创建Maven工程
第一步: 选择new→maven→Maven Project
第二步:
第三步:
注:选择maven的工程骨架,选择quickstart 打包格式为:jar; 选择webapp 打包格式为:war
第四步:
注:Packaging:指定打包方式,默认为jar。选项有:jar、war、pom。
测试:
在src/main/java中创建com.tjetc.maven包,然后创建MavenFirst.java
package com.tjetc.maven;
public class MavenFirst {
public String sayHello(String name) {
return"hello " + name;
}
}
在src/test/java中创建com.tjetc.maven包,然后创建TestMavenFirst.java
package com.tjetc.maven;
import org.junit.Assert;
import org.junit.Test;
public classTestMavenFirst {
@Test
public void testSayHello() {
MavenFirst first = newMavenFirst();
String result = first.sayHello("zhangsan");
Assert.assertEquals("hello zhangsan", result);
}
}
注:在创建junit时 需要在pom.xml添加Junit依赖
junit
junit
4.12
test
执行maven命令进行测试
注:
Maven build和maven build…并不是maven的命令。
maven build…只是提供一个命令输入功能,可以在此功能中输入自定义的maven命令。
maven build的功能就是执行上次自定义命令。
不通过骨架创建Maven工程
第一步:选择new→maven→Maven Project 点击下一步
注:在此页面勾选Create a simple project
第二步:输入工程名等后点击完成.
注:Packaging:指定打包方式,默认为jar。选项有:jar、war、pom。
注:当你选择打包格式为war时,不通过骨架创建pom.xml 会提示一个错误;
利用eclipse新建的java web项目没有部署描述符web.xml文件
解决办法:
右键项目名称 --> Java EE Tools --> Generate Deployment descriptor stub
即可生成web.xml文件。