第一章:Maven安装:
1.需要改进项目的开发和管理,需要maven
- (1)maven可以管理jar文件
- (2)自动下载jar和它的文档,源代码
- (3)管理jar直接的依赖,a.jar 需要 b.jar,maven会自动下载b.jar
- (4)管理你需要的jar版本
- (5)把你测试你的代码是否正确
- (6)帮你编译程序,把java编译为class
- (7)帮你打包文件,形成jar文件,或者是war文件
- (8)帮你部署项目
2.构建:项目的构建
构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等。
maven支持的构建包括有:
1.清理,把之前项目编译的东西删除掉,我新的编译代码做准备。
2.编译,把程序源代码编译为执行代码,java—class文件。批量的,maven可以同时把成千上百的文件编译为class。
- javac不一样,javac一次编译一个文件。
3.测试,maven可以执行测试程序代码,验证你的功能是否正确。
- 批量的,maven同时执行多个测试代码,同时测试很多功能。
4.报告,生成测试结果的文件,测试通过没有。
5.打包,把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件,通常java程序,压缩文件是jar扩展名的。对于web应用,压缩文件扩展名是.war。
6.把5中生成的文件jar,war安装到本机仓库
7.部署,把程序安装好可以执行。
3.maven核心概念:用好maven,了解这些概念
- (1)pow:一个文件,名称是pom.xml,pom翻译过来叫做对象模型。maven把一个项目当做模型使用。可以控制maven构建项目的过程,管理jar依赖。
- (2)约定的目录结构:maven项目的目录和文件的位置都是规定的。
- (3)坐标:是一个唯一的字符串,用来表示资源的。
- (4)依赖管理:管理你的项目可以使用jar文件。
- (5)仓库管理(了解):你的资源存放的位置
- (6) 生命周期(了解):maven工具构建的时候用的工具是插件
- (7)插件和目标(了解):执行maven构建的时候用的工具是插件
- (8) 继承
- (9) 聚合
4.maven工具的安装和配置。
(1)需要从maven的官网下载maven的安装包
(2)解压安装包,解压到一个目录,非中午目录。
- 子目录 bin:执行程序,主要是mvn.cmd
(3)配置环境变量
cmd下:
mvn -v
第二章:Maven的核心概念
1.Maven工程约定目录结构,约定是大家都遵循的一个规则。
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
- - -/src
- - - - - - - -/main # 放置你的主程序java代码和配置文件
- - - - - - - - - - - -/java # 你的程序包和包中的java文件
- - - - - - - - - - - -/resources #你的java程序中要使用的配置文件
- - - - - - - - /test # 放测试程序代码和文件的(可以没有)
- - - - - - - - - - - - -/java # 测试程序包和包中的java文件
- - - - - - - - - - - - -/resources #测试java程序中要使用的配置文件
- - -/pom.xml maven的核心文件(maven项目必须有)
2.疑问:mvn compile 编译src/main目录下的所有java文件的。
(1)为什么要下载
- maven工具执行的操作需要很多插件(java类 - - jar文件)完成的。
(2)下载什么东西了
- jar文件 - - 叫做插件 - - 插件是完成某些功能
(3)下载的东西存放到哪里了?C:\Users\用户名.m2\repository
- 执行mvn compile,结果是在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
设置本机存放资源的目录位置(设置本地仓库):
1.修改maven的配置文件,maven安装目录/conf/settings.xml
- 先备份settings.xml
2.修改local_repository 指定你的目录(不要使用中文目录)
maven安装:
- 1.获取安装包,zip文件
- 2.解压缩文件,到一个目录,非中文目录
- 3.配置环境变量, M2_ HOME他的值是maven的安装目录
- 4.在path中加入%M2_ HOME%\bin
- 5.测试maven的安装,使用mvn -v,查看maven的版本信息
maven的核心概念:
1.约定的目录结构
- 项目的目录Hello
- src和pom.xml平级的
- src/test
- java:测试程序代码的
- resources:配置文件
- src/main
- java :主程序java文件
- resources:配置文件
2.坐标(gav)
- 1.groupld :组织编码,域名倒写
- 2.artifactld:项目名称
- 3.version:自定义版本号
3.依赖( dependency) : maven管理依赖
- 使用依赖把jar导入到你的项目中。
junit junit< /artifactld> 4.11
4.仓库
- 存放的jar , maven的插件等等
- 仓库分类
- 中央仓库:最权威的,所有的资源都在这里
- 本地仓库,可以在mave安装目录/conf/settings.xml指定,
非中文路径,不要有空 - 中央仓库的镜像:分担压力的
- 私服:公司的局域网内部使用的
5.maven的命令
- maven通过命令完成项目的构建
- mvn clean :清理
- mvn compile :编译src/main/java目录中的程序,把java编译为class文件,并放到target/classes目录中;同时会到target/classes目录中
- mvn test-complie一编译src/main/test目录 下的java程序,拷贝到target/test-classes目录中
- mvn test - 可以进行单元测试,使用junit测试src/main/java目录中的程序是否符合要求
- mvn package:打包一把程序中src/main/ 下面的java编译后的class和resources中的配置文件放入到-个压缩
- mvn install:把jar,war安装到本机的仓库中
6.maven的生命周期和插件
- 生命周期:项目的构建过程清理,编译,测试,报告,打包,安装,部署
- 插件: maven提供的功能。用来执行清理。编译,测试,报告,打包的程序
maven常用设置
- 1.maven自己的属性
<proiject.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
< maven.compiler.source> 1.8</maven.compiler.source>
<maven.compiler.target> 1.8 </maven.compiler.target>
- 2.自定义变量
<!--自定义变量,表示版本号- ->
< spring.version> 5.2.5 </spring.version>
<junit.version>4.13</junit.version>
< dependency>
< groupld>junit </groupld>
< artifactld>junit</artifactld>
<version> ${junit.version}< /version>
<scope>test</scope>
</dependency>
- 3.maven常用设置
<resource>
maven常用设置
< directory> src/main/java< /directory><!--所在的目录-->
<includes> <!--包括目录下的.properties, .xml文件都会扫描到-->
<include> **/*.properties < /include>
<include>**/*.xrml</include>
< /includes>
<--filtering 选项false不启用过滤器,*.property 已经起到过滤的作用了-->
< fitering> false</filtering>
3.resource资源插件
</resource>
</resources>、
- 1.默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到targ,对于src/main/java目录下的非java文件不处理。不拷贝到target/classes目录中
- 2.我们的程序有需要把-些文件放在src/main/java目录中,当我在执行java程序时。需要用到src/main/javaE
需要告诉maven在mvn compile src/main/java目录下的程序时。需要把文件一同拷贝到target/classes目录中,
此时就需要在中加入 .
5.仓库
1)仓库是什么:仓库是存放东西的,存放maven使用的jar和我们项目使用的jar
- maven使用的插件(各种jar包)
- 我项目使用的jar包(第三方的工具)
2) 仓库的分类:
- 本地仓库,就是你的个人计算机的文件夹,存放各种jar
- 远程仓库:在互联网上的,使用网络才能使用的仓库
- (1):中央仓库,最权威的,所有开发人员都共享使用的一个集中的仓库,
- https://repo.maven.apache.org : 中央仓库地址
- (2):中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都是镜像
- (3):私服,在公司内部,在局域网中使用的,不是对外使用的。
- (1):中央仓库,最权威的,所有开发人员都共享使用的一个集中的仓库,
3) 仓库的使用,maven仓库的使用不需要人为参与。
- 开发人员需要使用mysql驱动—>maven首先先查本地仓库—>私服—>镜像–>-中央仓库
6.pom:项目对象模型,maven仓库的使用不需要人为参与
pom.xml初识:
- 坐标:唯一值,在互联网中唯一标识一个项目的
<groupId>公司域名的倒写<groupId>
<artifactId>自定义项目名称<artifactId>
<version>自定义版本号</version>
www.mvnrepository.com:搜索使用中央仓库,使用groupId或者artifactId作为搜索条件
- packaging:打包后压缩文件的扩展名,默认是jar,web应用是war。
- 依赖:
- dependencies和dependency ,相当于是java代码中import
- 你的项目要使用的各种资源说明,比我的项目要使用mysql驱动
<dependencie s>
<!--依赖java代码中 import-->
<dependency>
<groupId>mysql</groupId>
<version>mysql - connector-java</artifactId>
<version>5.1.20</version>
</ dependency>
</ dependencies>
- properties:设置属性
- build:maven在进行项目的构建时,配置信息,例如指定编译java代码使用的jdk版本等。
<properties>
<java.version>1.8</java.version>
<java.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
- pom.xml加入依赖的方式:
log4j日志依赖
<dependency>
<groupld>log4j</groupld>
<artifactld>log4j</artifactld>
<version>1.2.17</version>
</dependency>
junit单元测试依赖
<dependency>
<groupld>junit</groupld>
<artifactld>junit</artifactld>
<version>4.1 1 </version>
</dependency>
7.maven生命周期,maven的命令,maven的插件
maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。maven可以使用命令,完成项目的清理,编译,测试,等
maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件
- 单元测试(测试方法):用的是junit,junit是一个专门测试的框架(工具)。
- junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的。方法是测试得基本单位(单元)。
maven借助单元测试,批量的测试你类中的大量方法是否符号预期的。
使用步骤:
- 1.加入依赖,在pom.xml加入单元测试依赖
<dependency>
<groupId>junit</groupId>
<version>junit</artifactId>
<version>4.11</version>
<scope>text</ scope>
</dependency>
- 2.在maven项目中的src/text/java目录下,
- 创建测试程序。推荐的创建类和方法的提示:
- 1.测试类的名称 是Test + 你要测试的类名
- 2.测试的方法名称 是:Test + 方法名称
例如:你要测试HelloMaven,
创建测试类 TestHelloMaven
@Test
public void testAdd(){
//测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
1.方法是public的,必须的
2.方法没有返回值,必须的
3.方法名称是自定义的,推荐是Test + 方法名称
4.在方法的上面加入@Test
mvn compile编译main/java/目录下的java 为class文件,同时把class拷贝到 target/classes目录下面把main/resources目录下的所有文件 都拷贝到target/classes目录下
第三章
1.在idea中设置maven,让idea和maven结合使用。
idea中内置了maven,一般不使用内置的,因为用内置修改maven的设置不方便。
使用自己安装的maven,需要覆盖idea中的默认的设置。让idea知道maven安装位置等信息
配置的入口,①:配置当前工程的设置,
- file–settings —Build, Excution , Deployment–Build
- - -Maven
- Maven Home di rectory: maven 的安装目录
- User settings File :就是maven安装目录conf/setting . xm1配置文件
- Local Repository : 本机仓库的目录位置
- –Build Tools –Maven- -Runner
- VM Options : arche typeCatalog- -internal
- JRE:你项目的jdk
- archetypeCatalog=internal,maven项 目创建时,会联网下载模版文件,
- 比较大,使用 archetypeCatalog- internal,不用下载,创建maven项 目速度快
②:配置以后新建工程的设置,
- file–other settings–settings for New Project
2.使用模板创建项目
- 1)maven-archetype-quickstart:普通的java项目
- 2)maven-archetype-webapp:web工程
第四部分
1.依赖范围,使用scope表示的。
scope的值有 compile,test,provided
scope:表示依赖使用的范围,也就是在maven构建项目的哪些阶段中起作用。;
maven构建项目 清理,编译,测试,打包,安装,部署 过程(阶段)
junit的依赖范围是 test
依赖的范围: compile、test. provided ,默认采用compile
compile | test | provided | |
---|---|---|---|
对主程序是否有效 | 是 | 否 | 是 |
对测试程序是否有效 | 是 | 是 | 是 |
是否参与打包 | 是 | 否 | 否 |
是否参与部署 | 是 | 否 | 否 |
第五部分:
<properties>
<!-- maven构建项目使用编码, 避免中文乱码-->
<project.build.sourceEncoding>UTF - 8</ project.build.sourceEncoding>
<!--编译代码使用的jdk版本-->
<maven. compiler.source>1.8< /maven.compiler.source>
<!--运行程序使用的jdk版本-->
<maven. compiler.target>1.8</maven.compiler.target>
</properties>
maven常用操作
1.maven的属性设置
设置maven的常用属性
2.maven的全局变量
自定义属性,
- 1.在
通过自定义标签来声明变量(标签名就是变量名) - 2.在pom.xm|文件中的其他位置,使用${标签名}使用变量名的值
- 自定义全局变量-般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量定义,再使用${变量名}
<!--自定义变量,表示版本号-->
<spring.version>5.2.5</spring.version> I
<!-- spring依赖-->
<dependency>
<groupId>org . springframework</groupId>
<artifactId>spring- core</artifactId>
<version> ${spring.version</version>
3.资源插件:
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的. properties, .xml文件都会扫描到-->
<include>**/*.properties</ include>
<include>**/*.xml</include>
</includes>
<!- filtering选项false 不启用过滤器,* .property已经起到过滤的作用了-->
<fil tering> false</filtering>
</resource>
</resources>
</build>
作用:mybaits课程中会用到这个作用
- 1.默认没有使用resources的时候,maven执行编译代码时,会把src/main/resourse目录中的文件拷贝到target/classes目录中
- 对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中
- 2.我们的程序有需要把一些文件放在src/main/java目录中,当我在执行java程序时,需要用到src/main/java目录中的文件。需要告诉maven 在 mvn compile src/main/java 目录下的程序时,需要要把文件一同拷贝到target/classes目录中。
- 此时就需要在
中加入
- 此时就需要在