maven基础
maven是项目构建工具,用来依赖管理
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
-
maven的两大核心
依赖管理:对jar的管理
项目构建:对项目进行编译、测试、打包、部署一系列操作都可以通过命令来实现
-
maven的安装
下载地址:http://maven.apache.org/download.cgi#
解压,注意目录中不要包含中文和空格
配置环境变量:(maven的运行需要jdk)
-
idea配置maven
如果要选择idea提供好的骨架需要勾选 create from archetype
idea提供好的maven java骨架
注意 ! ! !
创建第一个maven项目的同学(萌新)千万千万千万不要手贱去点quickstart, 普普通通的创建就行了
(否则就会没有src的目录, 这是up主在经历的n多次的创建之后得出的结论)
-
maven配置本地仓库
apache-maven-3.6.3\conf\settings.xml
-
maven项目标准目录结构
target:存放编译之后的文件(target目录并不属于maven项目标准目录结构)
导入maven项目
main:主要的
- java:存放代码
- resource:存放配置文件
- webapp:存放网页
test:单元测试
-
maven的常用命令
- clean:清理编译后的class代码
mvn clean会删除target整个目录包括target目录本身
- compile:编译
将项目的.java文件编译成.class文件,将编译后.class文件存放到target目录下
- test:单元测试
单元测试类名有要求: XxxxTest.java(要求以 Test.java结尾)
项目跟目录下 src/test/java 目录下的单元测试类都会执行
- package:打包
web project ---war包
java project ---jar包
- install:安装
打包项目到本地仓库(可以在本地共享jar包)
-
maven项目的生命周期
在maven中有“三套”生命周期,每一套生命周期相互独立,互不影响。在一套生命周期内,执行后面的命令前面的命令都会自动执行
- CleanLifeCycle:清理生命周期
clean
- defaultLifeCycle:默认生命周期
compile、test、package、install、deploy
- siteLifeCycle:站点生命周期
site
注意:在一套生命周期内,执行后面的命令前面的命令都会自动执行
-
eclipse中配置maven环境
- 安装m2e插件
EMBEDDED(embedded内嵌式)内嵌版本
- 修改内嵌版本到自己下载的版本
- 配置userSetting让eclipse能知道maven仓库的位置
选择 settings.xml ,eclipse会自动解析出仓库位置
- 构建索引
-
创建maven项目
<build>
<plugins>
<!-- 设置jdk的编译版本为1.8 -->
<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>
- 查找依赖
-
依赖范围
- 修改依赖范围
总结:如果使用到tomcat自带的jar包,将项目中依赖作用范围设置为:provided
-
运行调试maven项目
-
maven概念模型
两大核心:
- 依赖管理:对jar包管理
- 项目构建:通过命令进行项目构建
-
传递依赖冲突解决
传递依赖:A依赖B,B依赖C(1.1版本),B是A的直接依赖,C就是A的传递依赖,A还依赖于D,D依赖于C(1.2版本)
- 解决方案
- maven自己的调解原则
- 第一声名者优先原则:谁先定义的就用谁的传递依赖。
- 路径近者优先原则:直接依赖高于传递依赖。
- 排除依赖
- 版本锁定(推荐使用)
-
通过maven整合ssh框架
-
通过maven对项目进行拆分、聚合(重点)
- 创建父工程
- 创建子工程
运行的方式:
-
私服的应用
安装私服
下载安装包
- 仓库类型
上传jar包到私服
-
maven的好处