第一章 Maven概述
擅长管理大型项目
自动管理你需要的jar包
自动进行下载我们需要的jar包。
1 Maven的概念
Maven是项目进行模型抽象,充分运用面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
说白了: Maven是由Apache开发的一个工具用来管理java项目, 依赖管理(jar包的管理),项目构建.
2 Maven的作用
-
依赖管理: maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。
-
项目构建: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
-
maven对工程分模块构建,提高开发效率。
3 Maven的概念模型
4 Maven的仓库
4.1 Maven的仓库
仓库名称 | 作用 |
---|---|
本地仓库 | 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。 |
中央仓库 | 就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:http://repo1.maven.org/maven2/ |
远程仓库(私服) | 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven须要下载构件的时候。它从私服请求,假设私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。 |
默认settings.xml中配置的是远程中央仓库的地址,如果想用阿里的,改为阿里私服的地址即可
4.2 仓库中存放的内容
- Maven自身运行所需要的插件
- 第三方框架(spring/mybatis/springmvc)和工具类的jar包
- 我们自己开发的maven项目安装后的jar包
5 Maven的坐标
Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。在Maven中,不论什么一个依赖、插件或者项目构建的输出, 都能够称之为构件。
为了能自动化的解析任何一个Java构件. Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。
包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。坐标的定义元素如下:
- groupId:项目组织唯一的标识符,实际对应JAVA的包的结构
- (一般写公司的组织名称 例如:com.itheima,com.alibaba)
- artifactId: 项目的名称
- version:定义项目的当前版本 ,SNAPSHOT快照版 Release 稳定版
例如:要引入druid的jar包,只需要在pom.xml配置文件中配置引入druid的坐标即可:
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
第二章 maven的安装(软件)
1 下载maven
2 安装maven
将maven压缩包解压, 复制到没有中文没有空格的目录下,即安装完毕
3 maven的目录介绍
目录名 | 作用 |
---|---|
bin | 可执行指令 |
boot | 第三方类的加载框架 |
conf | 配置文件目录 |
lib | maven自身的类库 |
4 配置环境变量
MAVEN_HOME=D:\01_install\03_kaifa\apache-maven-3.6.1
Path=%MAVEN_HOME%\bin;... ...
配置Maven的时候(必须MAVEN_HOME)
- MAVEN_HOME: 配置到Maven工具解压目录
- path: 配置到Maven工具解压之后里面的bin目录
5 配置本地仓库
1、找到Maven解压目录\conf\settings.xml
2、在setting.xml 文件中找到 localRepository 标签
3、将 <localRepository>/path/to/local/repo</localRepository>从注释中取出
4、将标签体内容修改为自定义的Maven仓库目录
1 本地建立repository目录
自己建立本地repository目录(或者拷贝别人现成的repository目录),存放jar包的地方。
一般放在maven的安装目录下。
2 settings.xml中配置repository目录路径
在maven的安装目录中 maven/conf/settings.xml 配置本地仓库:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\01_install\03_kaifa\repository_maven</localRepository>
3 settings.xml中配置私服地址
中央仓库可能会被xx,所以选用阿里的私服,这样速度会快些,配置阿里云远程仓库 。
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
6 测试maven安装成功
打开cmd本地控制台, 输入
mvn -version
第三章 IDEA整合本地Maven
1 IDEA配置maven环境
idea中自带的bundle maven,我们不使用,我们换成自己的maven目录
方式一:
方式二:
问题: 解决创建工程缓慢
因为 联网 下载骨架内容, 所以 会导致创建工程缓慢
-DarchetypeCatalog=internal
配置自动导入java包,不用自己刷新:
importing ——> import maven projects automatically
2 IDEA创建maven工程
2.1 创建空工程
2.2 创建没有骨架的javaSE工程
创建java代码:
package cn.itcast;
public class ProductDao {
public void add() {
System.out.println("1 添加商品 ... ...");
}
public void del() {
System.out.println("2 删除商品 ... ...");
}
public void update() {
System.out.println("3 修改商品 ... ...");
}
public void queryAll() {
System.out.println("4 查询所有商品 ... ...");
}
}
创建测试代码:
正式上线前, 每个方法都必须经过测试, 目前我们能够想到的就是main方法.
因为一个类只有一个main方法, 一个类可能有上千个方法, 那得需要多少个方法, 所以 迫切需要更高效方法, junit测试登场了.
为什么junit报红? 因为缺少junit包, 导入缺少的junit包即可.
解决pom依赖问题:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itcast</groupId>
<artifactId>day1801</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--导入junit包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
2.3 创建有骨架的javaSE工程
缺少 resources目录 补上
pom.xml中会产生很多多余的配置
注意pom中可能jdk编译版本不对,改为1.8 make compile
2.4 创建有骨架的javaEE工程
标准web工程目录结构:
自己建立main下的resources目录
自己建立test目录以及下面的java目录、resources目录
并且make directory as source root 、resources root
test source root 、test resources root:目录颜色变蓝变绿
web.xml:
更新为3.1 而不是默认的2.3 ,2.3版本是不支持注解的
方法:用以前资料里的web.xml替换idea中自动生成的
pom.xml的依赖问题:
写依赖dependency如servlet,先写artifactId,会自动补全groupId
tool bottons:项目界面右边的Maven Projects中可以查看引入的jar包
junit默认是4.1.1, 修改为4.1.2,否则Spring会有问题
2.5 创建没有骨架的javaEE工程
问题: 缺少webapp 目录
问题: 缺少 web.xml
2.6 IDEA集成配置外部Tomcat启动
配置本地Tomcat路径的位置
Deployment下:选javaee:war exploded:热部署:这样修改源码后,不需要重新发布tomcat
Application context: / 发布项目的URL中就没有前缀目录
Server 中选项选update classes and resources
第四章 Maven依赖管理
1 maven插件
1.1 jdk编译版本的插件
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
1.2 maven内部tomcat7服务端的插件(可选)
如果想使用tomcat8.X版本,需要使用idea集成外部的tomcat
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--配置端口号-->
<port>80</port>
<!--配置项目路径-->
<path>/day1804</path>
</configuration>
</plugin>
tomcat 插件注意问题
Maven的中央仓库中只有tomcat7.X版本
如果想使用tomcat8.X版本,
- 需要从第三方仓库查找
- 或者使用idea集成外部的tomcat插件
2 导入依赖
https://mvnrepository.com/
仓库中可以提供坐标
2.1 导入junit依赖
导入junit坐标
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
2.2 导入servlet的依赖
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
注意事项:
本地仓库中没有的,pom中加入dependency坐标从中央仓库中下载jar包到本地仓库中。
当本地仓库有变动时,就要update更新,保持idea与本地仓库jar包一致
3 依赖范围