Maven
今日学习目标:
一、Maven介绍
Maven介绍:
1-1概念:
Maven是Apache下的一个开源项目,纯java开发,它是一个项目管理工具,
它用于对java项目进行项目构建、依赖管理及项目信息管理。当前使用Maven的项目在持续增长。
一句话:maven是用来构建项目的工具
简历:熟练掌握svn/git/maven等项目管理和项目构建工具
Maven包含了一个项目对象模型 (清单文件)(Project Object Model),一组标准集合(清单文件中的jar包集合),一个项目生命周期(流程)(Project Lifecycle),一个依赖管理系统(标签)(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑(jdk tomcat)
1-2类似于maven项目管理工具
1.ANT apache ant :用来构建项目
2.Gradle。它相比maven的优点是简洁,它使用Grovvy脚本编写,不同于maven配置xml
1-3Maven概念模型:
二.Maven概念模型:
2-1、项目对象模型 (Project Object Model)
POM对象模型,每个maven工程中只一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。。
Pom.xml清单文件,里面定义了很多dependency,jar包的清单。
2-2、依赖管理系统(Dependency Management System)
maven通过坐标对项目工程所依赖的jar包统一规范管理。
比如:项目依赖springmvc4.3.,通过在pom.xml中定义依赖即可将springmvc的jar包自动加入工程:
pom.xml中定义依赖如下:
org.apache.spring
springmvc
4.3.24
2-3、maven定义一套项目生命周期(Project Lifecycle)
一个软件开发人员每天都在完成项目的生命周期:自动清理、编译、测试、部署,有的手工完成,有的通过Ant(也是一个项目构建工具)脚本自动完成,Maven将项目生命周期抽象统一为:清理、初始化、编译、测试、报告 、打包、部署、站点生成等。
maven就是要保证一致的项目构建流程,通过执行一些简单命令即可实现上边生命周期的各各过程。
清理、将原始的class文件清理掉
编译、将java文件编译成class文件
测试、测试代码是否可用
报告 、控制台打印的东西
打包、打成jar包或者war包
部署、将war包或者jar包,运行到制定的地方
2-4、一组标准集合
强调:maven工程有自己标准的工程目录结构、定义坐标有标准。多个dependency
2-5、maven 管理项目生命周期过程都是基于插件完成的
开发中使用tomcat的插件。
三.Maven仓库:
3-1、本地仓库
相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。
第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。
3-2、中央仓库
就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。
中央仓库的地址:http://repo1.maven.org/maven2/
3-3、远程仓库
http://maven.aliyun.com/mvn/view 阿里的远程仓库地址
在公司内部架设一台私服(服务器),其它公司架设一台仓库,对外公开。
公司搭建分为
外网 (前提知道网址:任何程序员都可以使用)
内网(仅供公司内部程序员使用)
四.Maven下载&安装:
4-1、下载
http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.3.9-bin.zip
使用方式:直接解压
4-2、配置环境变量
MAVEN_HOME
4-3、测试是否安装成功
五.Maven本地仓库的配置:
5-1 在maven的安装目录中conf/ settings.xml文件,
在这里配置本地仓库。
配置阿里的远程仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
5-2:本地仓库目录介绍
如果本地仓库不配置,默认地址:
u
s
e
r
.
d
i
r
/
.
m
2
,
u
s
e
r
.
d
i
r
(
w
i
n
d
o
w
s
用
户
目
录
)
。
理
解
全
局
s
e
t
t
i
n
g
和
用
户
s
e
t
t
i
n
g
。
全
局
s
e
t
t
i
n
g
:
在
m
a
v
e
n
的
安
装
目
录
中
c
o
n
f
/
s
e
t
t
i
n
g
s
.
x
m
l
文
件
.
所
有
配
置
应
用
于
所
有
项
目
。
用
户
s
e
t
t
i
n
g
:
{user.dir}/.m2,user.dir(windows用户目录)。 理解全局setting和用户setting。 全局setting:在maven的安装目录中conf/ settings.xml文件. 所有配置应用于所有项目。 用户setting:
user.dir/.m2,user.dir(windows用户目录)。理解全局setting和用户setting。全局setting:在maven的安装目录中conf/settings.xml文件.所有配置应用于所有项目。用户setting:{user.dir}/.m2。
某些用户需要对maven特殊设置,用户可以自定义setting.
教学中统一使用全局setting.xml
六.IDEA中配置Maven及创建Maven项目
在idea中配置maven
第一步:创建maven项目
maven内部提供很多项目原型,方便去创建项目。(选择java和javaweb)
maven对所有工程管理基于坐标进行管理。
坐标包括:
group id:项目的名称,项目名称以域名的倒序,比如:cn.jiyun.taotao
artifactid:模块名称(子项目名称)
version:模块的版本,snapshot(快照版,没有正式发行)、release(正式发行版本)
第二步:maven项目目录介绍
备注:idea创建maven项目默认没有java目录 必须手动创建
第三步:设置编译版本插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
七.Maven中pom.xml文件(重点)
Pom文件中打包方式为3种 war jar pom(父工程)
pom.xml是Maven项目的核心配置文件,位于每个工程的根目录,基本配置如下:
<project > :文件的根节点 .
<modelversion > : pom.xml使用的对象模型版本 .
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 .
<packaging > :打包类型,一般有jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件(jar包)配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译(jdk)、运行插件(tomcat)等。
启动maven项目
八.Maven的生命周期
编译命令 mvn compile
编译后 .class文件在 out下 (这个命令只会对java源程序编译, 不会编译测试代码 , 编译测试类 mvn test-compile , 编译后.class 文件在 out)
测试命令 mvn test
执行所有测试用例方法, 重新编译
清除命令 mvn clean
清除target目录 (清除所有编译结果或者打包结果 ),清理后编译。
打包命名 mvn package
java项目生成 jar包, web项目生成war包