Maven——管理Java项目的工具
文章目录
1.认识Maven
软件开发过程中的过程:
Ⅰ.需求分析;
Ⅱ.设计阶段;
Ⅲ.开发阶段;
Ⅳ.测试阶段;
Ⅴ.项目打包与发布。
Maven定义:
Maven是一款自动化构建化工具,由Apache开源基金会所属,使用java语言开发。
Maven作用:
①.Maven可进行【项目的自动构建】,帮助开发人员编译,测试等等。
②.Maven可用于【管理依赖】(jar包)。
Maven的获取与安装:
①.检查确认JAVA_HOME环境变量的配置;
②.解压apache-maven-版本号.zip
;
③.将Maven/bin目录放入path中(或者放入MAVEN_HOME);
④.测试,使用DOS命令执行mvn -v
命令。
2.Maven的相关概念
(1).约定的目录结构规范:
Maven项目文件夹:
/src/main/java [java程序源代码]
/resources [程序所需配置文件]
/test/java [java程序测试代码]
/resources [java测试所需配置文件]
/pom.xml [核心配置文件!!!]
(2).pom.xml文件详解:
作用:
通过pom文件进行【项目构建】和【依赖管理】;
(3).坐标(gav):
坐标的组成:
Ⅰ.
groupId
:组织名称,代码,一般情况下为【公司域名的倒写】,比如www.baidu.com---->(groupId)com.baidu
。
Ⅱ.artifactId
:项目名称(唯一的)
Ⅲ.version
:项目的版本号。
坐标的特点:
坐标是资源的唯一标识,在Maven中,每个资源都有坐标。
用于管理依赖,使用外界的jar包也需要使用gav。
坐标搜索的地址:
登录https://mvnrepository.com/
可查询到很多项目的坐标。
(4).依赖(dependency)
依赖的使用:
①使用dependency与gav一起完成依赖的使用;
②在pom中用dependency和gav一起完成依赖的说明。
在pom.xml中的语法格式:
<dependencies>
<dependency>
<!--必要-->
<groupId>(组织名称)</groupId>
<artifactId>(项目名称)</artifactId>
<version>(版本号)</version>
<!--非必要-->
<!--规定项目的打包类型,比如jar,war等等-->
<packaging>(项目打包类型)</packaging>
<!--规定依赖的范围-->
<!--compile:默认,参与构建项目的任意阶段-->
<!--test:则测试阶段使用,比如执行mvn test时使用了junit-->
<!--provided:提供者,服务器提供某个依赖的包,比如servlet,jsp-->
<scope>(依赖范围)</scope>
</dependency>
</dependencies>
Maven使用gav作为标识,进入互联网查找资源jar包并下载到本机。
(5).仓库
maven仓库存放内容:
①.maven工具自己的jar包;
②.第三方其他的jar包,例如mysql的驱动;
③.自己写的程序被打包存入。
本地仓库的路径:
默认:
(登录用户)/.m2/repository
自定义方法:
Ⅰ.进入
(maven安装目录)/conf/settings.xml
目录;
Ⅱ.修改setting.xml文件中
<localRepository>(新的仓库路径)</localRepository>
Ⅲ.将仓库资源拷贝到本地仓库中。
(6).Maven生命周期:
清理->编译->测试->报告->打包->安装->部署
(7).单元测试(junit):
概念:
junit是指单元测试工具;
单元概念:
java中单元指方法,方法是测试的最小单位;
作用:
junit测试方法是否达成业务需求,属于自测范畴;
使用:
<1>加入junit依赖;
<2>在src/test/java/下
创建类,写测试类代码。
测试类代码规范:
①测试类名:
Test+(要测试的类名)
;
②.测试类包要和测试类名字一致;
③.测试方法:public void 【Test+测试方法名】(无参数){...}
④.测试类中的方法可单独执行;
⑤.在方法域中加入测试注解:@Test
。
(8).命令:
mvn clean
:清理,删除以前生成的数据(target目录);
mvn compile
:编译,将【src/main/java】目录中java代码编译为class文件,同时将class文件拷贝到【target/classes】目录中;
mvn test-compile
:编译,将【src/test/java】目录中的源文件编译,生成class文件拷贝到【target/test-classes】目录中;同时将【src/test/resources】目录文件拷贝到【target/test-classes】。
mvn test
:测试,执行【target/classes】中的文件,测试【src/main/java】目录下主程序代码是否符合要求。
mvn package
:将class文件和配置文件打包成jar/war包。
mvn install
:把生成打包的文件,安装到maven仓库中。
mvn clean package
:清理已有的插件。
3.idea中的Maven
(1).idea中集成Maven:
进入File->settings->Build,Execution,Deployment->Build Tools->Maven
进入File->settings->Build,Execution,Deployment->Build Tools->Maven->Runner
(2).idea创建Maven的java工程:
创建模块选中Maven,选择模板:
普通java程序的目录结构:
(3).idea创建Maven的web工程:
创建模块选中Maven,选择模板:
web工程的目录结构:
(4).idea中Maven命令的实现:
右侧Maven处:
4.自定义变量:
在properties标签中,定义一个变量,指定版本的值:
比如:
<junit.version>4.11.RELEASE</junit.version>
<spring.version>5.2.5.RELEASE</spring.version>
在依赖中使用时:
<version>${junit.version}</version>
<version>${spring.version}</version>
5.maven处理文件的默认规则:
①.maven将【src/main/resources】目录中文件拷贝到【target/classes】目录下;
②.maven仅处理【src/main/java】目录中的.java文件,编译为class文件后拷贝到【target/classes】目录下;
资源插件可改变maven的默认处理文件规则:
<build>
<!--资源插件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<!--使上述目录中的properties和xml文件均会被拷贝至【target/classes】-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>