中文翻译成“专家”或“内行”。
maven是纯java语言编写的开源项目管理工具。
采用了POM(Project Object Model)项目对象模型的概念来管理项目,所有项目配置信息被定义在一个叫做pom.xml的文件中,通过pom.xml文件,Maven可以管理整个项目的生命周期,包括清除、编译、测试、报告、打包、部署等。
maven来源于apache。
总结:Maven是一个基于POM(项目对象模型)的Java项目管理工具,主要功能是统一开发规范与包的依赖管理。可以通过一小段配置文件来管理项目的构建、报告和文档的软件项目管理工具。
Maven官网:https://maven.apache.org/
(上官网了解maven的最新版本及如何下载maven)。
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
高度自动化,跨平台,可重用的组件,标准化的
依赖是Maven中最关键的部分,我们之所以在工程中使用Maven,就是因为它的依赖管理功能。
自动下载,统一依赖管理,避免jar包引起的错误。
Maven 通过、与三个向量来定位Maven 仓库其jar 包所在的位置,并把对应的jar 包引入到工程中来。
举例:在pom.xml中引入MySQL数据库的依赖
log4j
log4j
1.2.17
compile
表示组织名,一般为域名,如com.xzy
表示项目名,如userManage
表示版本号
管理项目的依赖(即管理项目中的包)
管理项目的生命周期
经常在导入jar包时没有成功,导致一些报错。
使用开发工具?
手工操作较多,编译,测试,部署等工作都是独立的,很难一步完成。
每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错。
使用Ant?(也是项目管理工具,管理起来比Maven复杂)
没有一个约定的目录结构。
必须明确让ant做什么,什么时候做,然后编译,打包。
没有生命周期,必须定义目标及其实现的任务序列
没有集成依赖管理。
使用Maven?
拥有约定,知道你的代码在哪里,放到哪里去。
拥有一个生命周期,例如执行mvn install就可以自动执行编译,测试,打包等构建过程。
只需要定义一个pom.xml,然后把源码放到默认目录,maven帮你处理其他事情。
拥有依赖管理,仓库管理。
传统方式管理jar的问题
jar冲突
jar依赖,一些jar包会依赖其他的,你要自己去找要依赖哪些,麻烦
jar体积过大,框 架集成越多,jar包会越来越多
jar在不同阶段无法个性化配置,jar包在项目开发各阶段,使用不同,如JUnit在测试时用,上线了就不用了,要去掉,手动删就比较麻烦。
使用maven方式管理jar依赖的好处
解决jar冲突
解决ja依赖问题
jar文件不用在每个项目保存,只需要放在仓库即可。
maven可以指定jar的依赖范围
5.1.下载解压
apache-maven-3.5.x-bin.zip Windows版编译包(推荐)
apache-maven-3.5.x-src.zip Windows版源码包
apache-maven-3.5.x-bin.tar.gz Linux版编译包
apache-maven-3.5.x-src.tar.gz Linux版源码包
注意:
(1)解压后的maven不要存放在中文目录下。
解压目录:
/bin 命令
/boot 类加载器框架包
/conf 配置文件
/lib 运行需要的jar包
5.2.配置环境变量
目的:可以使用bin下面的命令。
环境变量配置:
5.2.1: MAVEN_HOME
5.2.2:M2_HOME
5.2.3: 修改path添加maven相关路径
配置方式跟jdk有些类似,环境变量MAVEN_HOME和M2_HOME的值为maven的根目录、
然后在PATH环境变量里加入“%MAVEN_HOME%\bin;%M2_HOME%\bin;”即可!
5.2.4:在cmd下验证是否配置成功命令:mvn -version
这样子就说明成功了
本地仓库:在本机上用于存储jar包的一个地方。
Maven会将项目工程中依赖的构件(jar包)从中央仓库或第三方仓库下载到本机一个目录下管理,每个电脑默认的仓库是在 $user.home/.m2/repository下:
一般我们会修改本地仓库位置,自己创建一个文件夹,在从网上下载一个拥有相对完整的所有jar包的结合,都丢到本地仓库中,然后每次写项目,直接从本地仓库里拿就行了。
修改“MAVEN_HOME\config”下的setting.xml文件,配置本地仓库。注意是:“E:/”而非“E:\”
F:\workspase\mvn_repository:是自己创建的本地仓库,将网上下载的所有jar包,都丢到该目录下,我们就可以直接通过maven的pom.xml文件直接拿。
6.1.配置阿里云仓库:
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
6.2.第三方仓库(私服)
第三方仓库,又称为内部中心仓库,也称为私服。一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问)
私服可以使用的是局域网,中央仓库必须使用外网。
也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。
注意:连接私服,需要单独配置。如果没有配置私服,默认不使用。
6.3.中央仓库
Maven内置了远程公用仓库:http://repo1.maven.org/maven2。
但一般我们都在:http://www.mvnrepository.com/查找需要的jar包,进行下载。
这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主。
工程依赖的jar包如果本地仓库没有,默认从中央仓库下载。
7.1.Maven项目的一般创建
使用Maven创建项目,它会遵循一些规范和约束,比如用Maven搭建的项目,Maven对项目的目录结构进行一些约束,例如使用Maven创建一个Web项目时,项目的目录结构如下:
src/main/java | 存放项目的.java文件(开发源代码) |
---|---|
src/main/resources | 存放项目配置文件,如果没有配置文件该 项目可无,如spring.xml,Hibernate配置文件 |
src/main/webapp | 存放web项目资源文件(web项目才有,没有可创建) |
src/test/java | 存放所有测试.java文件(测试源代码) |
src/test/resources | 测试配置文件,如果没有配置文件该目录可无 |
target | 项目输出位置(可无) |
pom.xml | maven项目核心配置文件 |
注: 一个maven项目它的根目录下必定存在src文件夹和pom.xml
首先我们需要在eclipce配置maven对应的东西
在window ------> preferences ------>然后搜索maven,然后我们需要配置的就是Installations和User Settings
然后我们创建一个maven project,点击Next、然后目录要选择Internal,id选择webapp的,在Next
pom.xml:
4.0.0
com.xzy
T224_maven
war
0.0.1-SNAPSHOT
T224_maven Maven Webapp
http://maven.apache.org
junit
junit
4.12
test
javax.servlet
javax.servlet-api
4.0.1
provided
T224_maven
org.apache.maven.plugins
maven-compiler-plugin
3.7.0
1.8
UTF-8
7.2.使用命令行模式与Eclipse模式创建Maven项目
创建java项目
命令行下执行:
mvn archetype:generate | 表示生成项目组件 |
---|---|
DarchetypeCatalog=internal | 表示创建的是内部的项目 |
DgroupId=com.xzy | 表示组织(重) |
DartifactId=hellojava | 表示项目名(重) |
DarchetypeArtifactId=maven-archetype-quickstart | 表示使用的模板为java的模板 |
Dversion=0.0.1-snapshot | 表示版本(重) |
在哪个目录下运行该命令,就会在目录下创建项目。
创建web项目
命令行下执行:
mvn archetype:generate
-DarchetypeCatalog=internal
-DgroupId=com.xzy
-DartifctId=helloweb
-DarchetypeArtifactId=maven-archetype-webapp 使用的模板为web的模板
-Dversion=0.0.1-snapshot
创建之后的项目目录与java项目有些不一样。
mvn clean | 清除原来的编译结果(字节码文件)\删除target目录 |
---|---|
mvn compile | 编译,将文件编译成字节码文件\ 在根目录下生成target目录 |
mvn test | 运行测试代码:mvn test -Dtest=类名 //单独运行测试 |
mvn package | 打包项目,将项目打包成jar或war包(看pom.xml中,一般java项目打包成jar包,web项目打包成war包,打包成功后会在target下面生成一个jar包或war包)\ mvn package -Dmaven.test.skip=true //打包时不执行测试 |
mvn install | 将项目打包并安装到本地仓库 |
mvn deploy | 发布到本地仓库或者服务器(私服) |
先去到项目的根目录,再来操作上面的命令。