Maven 自动化构建工具
第一章 Maven简介
1.1软件开发阶段
需求阶段:分析项目具体完成的功能,有什么要求,具体怎么实现
设计阶段:根据分析结果,设计项目使用什么技术,解决难题
开发阶段:编码实现功能,编译代码,自我测试
测试阶段:专业测试人员,测试项目是否符合设计要求,出测试报告
项目打包,发布阶段:给用户安装项目
1.2 Maven 能做什么
1)项目自动构建,帮助开发人员做项目代码的编译(Maven可以一次编译多个文件),测试,打包,安装,部署等
2)管理依赖(管理项目中的jar包)
依赖:项目中所需要的其他资源,常见的jar,比如项目要使用Mysql驱动。(我们就说项目依赖Mysql驱动)
1.3 没有使用Maven怎么管理依赖
1)管理jar,需要从网络单独下载某个jar
2)需要选择正确的版本
3)手工处理jar文件之间的依赖。(例如:a.jar里面使用b.jar的类)
1.4什么是Maven
1)Maven是apache基金会的开源项目,使用java开发
2)Maven是项目的自动化构建工具,管理依赖
1.5 Maven 中的概念
-
pom
-
约定的目录结构
-
坐标
-
依赖管理
-
仓库管理
-
生命周期
-
插件和目标
-
继承
-
聚合
第二章 Maven核心概念
2.1 约定的目录结构
maven 项目使用大多数人遵循的目录结构。叫做约定的目录结构,一个maven项目是一个文件夹。(例如:项目名hello)
hello
src
main//主程序目录(完成项目功能的配置文件)
java//源代码(包和相关类定义)
resources//配置文件
test//测试程序代码(开发人员自己写的测试代码)
java//测试代码(junit)
resources//测试程序的配置文件
pom.xml//maven的配置文件,核心文件
maven可以独立使用:创建项目,编译代码,测试程序,打包,部署等。
maven和idea一起使用:通过idea借助maven,实现编码,测试,打包等。
编译是在项目文件的src文件目录下进行,mvn compile进行编译,第一次花的时间比较长,因为要下载很多依赖。
编译完成后,src文件目录有target文件,里面的classes就是编译后的,class文件可以使用java+文件名进行运行。
2.2 POM文件
全称:project object model 项目对象模型,pom.xml是maven的灵魂,maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以便进行构建和描述。
maven把项目当作模型处理,操作这个模型就是操作项目。maven通过pom.xml文件实现先阿嘎木的构建和依赖的管理。
hello的pom.xml
<?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>com.bjpowernode</groupId> <artifactId>ch01-maven</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <properties> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
</project>
2.3坐标
坐标组成:groupId,artifactId,version
坐标的作用:资源的唯一标识。在maven中,每个资源都是坐标,坐标值是唯一确认的,简称gav。
groupId:组织名称,(公司,单位,团体标识,这个值常使用公司域名的倒写)例:www.baidu.com groupid:com.baidu
如果项目规模比较大,也可以使用域名倒写+大项目的名称:com.baidu.appollo
artifactid:项目名称,如果groupid中有项目,此时当前的值是子项目名,项目名称是唯一的。
version:版本项目版本号,使用数字。三位组成:例如:主版本号,次版本号,小版本号。例如:5.5.3
注:版本号有-SNAPSHOT,表示快照,不是稳定的版本。
<packaging>项目打包的类型,有jar,war,ear,pom等,默认是jar写在项目坐标下方
项目使用gav:
1.每个Maven项目,都需要一个自己的gav。
2.管理依赖,需要使用其他的jar,也需要使用gav作为标识。
mvnrepository仓库网址用于搜索依赖项,添加到pom.xml中
2.4 依赖 dependency
依赖:项目中要使用的其他资源jar
需要使用maven表示依赖,管理依赖,通过使用dependency和gav一起完成依赖的使用,需要在pom.xml中,使用dependency和dependencies,还有gav完成依赖的说明。
<dependencies>
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
</dependencies>
2.5 仓库
仓库的存放:1.maven工作自己的jar包;2.第三方其他的jar,比如项目于要使用的mysql驱动;3.自己写的程序,打包为jar,存放到仓库中
仓库分类:
-
本地仓库:位于自己计算机之上,是磁盘中的某个目录
-
本地仓库:默认路径,登录操作系统的账号目录中/.m2/repository
例如:C:\users\31522\.m2\repository
-
修改本地仓库的位置:修改maven工具配置文件(maven的安装路径\conf\setting.xml)
步骤
1)创建一个目录,作为仓库使用。目录不要有中文和空格。目录不要太深。例如:D:\mavenrepository
2)修改setting.xml文件,指定上述目录路径(将D:\mavenrepository路径拷贝到 <local Repository> 和 </local Repository> 之间 )
maven的工作方式 :
自己项目的pom.xml(执行maven操作),从本地仓库,到私服(公司自己的maven服务器),到中央仓库镜像或者中央仓库,一级一级往上找,找到就返回。
2.6 maven的生命周期,插件和命令
maven生命周期:项目构建的各个阶段。包括:清理,编译,测试,报告,打包,安装,部署
插件:要完成构建项目的各个阶段,要使用maven命令,执行命令的功能是通过插件完成的(插件是jar,一些类)
命令:执行maven功能,由命令发生
单元测试(junit):一个单元测试工具,java常用
单元:在java中指方法,一个方法为一个单元,方法是测试的最小单元。
作用:使用junit测试是否完成要求。开发人员自测
使用方式:
1)加入junit依赖
2)在src/test/java目录中创建测试文件。写测试代码
单元测试使用建议:
-
测试类的定义:名称Test+测试类的名称
-
测试类包名和要测试的类的报名一样
-
类中定义方法:要测试的代码
方法的定义:public +方法,没有返回值,方法名称自定义,方法没有参数(建议Test+测试的方法名)
-
测试类中的方法,可以单独执行,测试类也可以
-
在方法上方+@Test做注解
命令!!
1)mvn clean:清理命令,作用删除以前生成的数据(删除target目录)
插件:maven-clean-plugin 版本2.5
2)mvn compile 编译,把src/main/java目录中java代码编译为class文件,把class文件拷贝到target/classes目录中,classes是存放类文件的根目录
插件:maven-compile-plugin版本3.1(代码编译插件)
maven-resources-plugin版本2.6资源插件,处理文件
(作用:把src/main/resources目录下的文件拷贝到target/classes目录中)
3)mvn test-compile:测试编译(编译src/test/java目录下的文件),将生成的class文件拷贝到target/test-classes目录。同时把src/test/resources目录中的文件拷贝到test-classes目录中
插件:同上
4)maven test:测试命令,作用执行test/classes目录的程序,测试src/main/java目录中的主程序代码是否符合要求
插件:maven-surefire-plugin版本:2.12.4
5)mvn package:打包,作用把项目中的资源class文件和配置文件都放进一个压缩文件中,默认压缩文件格式(.jar)
web应用是war类型
插件:maven-jar-plugin版本:2.4执行打包处理,生成jar扩展文件
放在target目录下
生成:ch01-maven-1.0-SNAPSHOT.jar
打包的文件名:artifactId+version+packaging(只包含类文件和配置文件)只有主函数的文件,没有test文件
6)mvn install:把生成的打包文件安装到maven仓库中
2.7 自定义配置插件
pom.xml文件中,build标签中,设置插件
-
第三章 Maven和Idea相结合
3.1在Idea中集成maven
idea有一个自导的maven,但往往不用自带的,通常使用自己安装的maven
步骤!
这个地方和上面一 样设置,一模一样
3.2 在idea中构建基于maven的java项目
快捷键ctrl+alt+shift+s
选择使用模板(选择创建的文件是java项目还是web项目!!)
名称+坐标(之前提到)
不用修改点完成~
文件已创建好
左边:文件目录
maven基本操作通过右侧工具栏使用