基础"/>
【Maven】基础
Maven安装《《《
文章目录
- 一、Maven简介
- 1、软件开发当中的阶段
- 2、Maven能做什么
- 3、没有Maven怎么管理依赖
- 4、什么是Maven
- 二、Maven中的概念
- 1、约定的目录结构
- 2、pom文件
- 3、坐标
- 4、依赖 dependency
- 5、仓库
- 6、Maven的生命周期,插件和命令
- 三、单元测试
- 1、使用单元测试
- 2、创建测试类和测试方法
- 3、命令
- 四、Maven与idea
- 1、idea集成Maven
- 2、创建基于maven的普通项目
- 3、单元测试
- 4、maven的工具窗口
一、Maven简介
1、软件开发当中的阶段
- 需求分析:分析项目具体完成的功能,有什么要求,具体怎么实现。
- 设计阶段:根据分析的结果,设计项目使用什么技术,解决难点。
- 开发阶段:编码实现功能。编译代码。自我测试。
- 测试阶段:专业的测试人员,测试整个项目的功能,得出一个测试报告。
- 项目的打包和发布:给用户安装项目。
2、Maven能做什么
- 1、项目的自动构建,帮助开发人员做项目代码的编译,测试,打包,安装,部署等工作。
- 2、管理依赖。(管理项目中使用的各种jar包)
- 依赖:项目中需要使用的其他资源,常见的是jar包。比如项目要使用mysql驱动,我们就说项目依赖mysql驱动。
3、没有Maven怎么管理依赖
- 管理jar,需要从网络中单独下载某个jar,需要选择正确的版本,手工处理jar文件之间的依赖。
4、什么是Maven
Maven是apache基金会的开源项目,使用java语言开发。
Maven可以把jar包所依赖的其他jar包自动下载并引入项目。
构建过程中的各个环节:清理,编译,测试,报告,打包,安装,部署
Maven的使用方式:
-
Maven可以独立使用:创建项目,编译代码,测试程序,打包,部署等等。
-
Maven也可以和idea一起使用:通过idea借助Maven来实现编译,测试,打包等等。
二、Maven中的概念
1、约定的目录结构
- Maven项目使用的大多数人遵循的目录结构,叫做约定的目录结构。
- 一个Maven项目是一个文件夹。比如一个叫做Hello的项目:
Hello 项目文件夹\src\main 叫做主程序目录(完成项目功能的代码和配置文件)\java 源代码(包和相关的类定义)\resource 配置文件\test 放置测试程序代码的(开发人员自己写的测试代码)\java 测试代码的(junit)\resource 测试程序需要的配置文件\pom.xml Maven的配置文件,核心文件
按照上面的目录创建相应的文件夹:
package com.powernode;public class HelloMaven{public int addNumber(int n1,int n2){System.out.println("hello maven");return n1+n2;}public static void main(String args[]){HelloMaven hello=new HelloMaven();int res=hello.addNumber(10,20);System.out.println("在main方法中,执行hello的方法"+res);}
}
在命令行输入:
mvn compile
2、pom文件
POM:即Project Object Model 项目对象模型。Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述。
<!-- project是根标签,后面是约束文件 -->
<project xmlns=".0.0" xmlns:xsi="" xsi:schemaLocation=".0.0 .0.0.xsd"><!-- pom模型的版本 -->
<modelVersion>4.0.0</modelVersion><!-- 当前项目的坐标 -->
<groupId>com.bjpowernode</groupId>
<artifactId>ch01-maven-java</artifactId>
<version>1.0</version><!-- maven的常用设置 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mavenpiler.source>1.8</mavenpiler.source>
<mavenpiler.target>1.8</mavenpiler.target>
</properties><!-- 依赖列表 -->
<dependencies><!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build><!-- 资源插件 -->
<resources>
<resource>
<directory>src/main/java</directory><!-- 所在的目录 -->
<includes><!-- 包括目录下的.properties,.xml 文件都会扫描到 -->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes><!-- filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
3、坐标
-
坐标组成:groupid,artifiactid,version。
-
坐标作用:确定资源的,是资源你的唯一标识。在maven中,每个资源都是坐标。坐标值是唯一的。简称叫gav。
<!-- 当前项目的坐标 -->
<groupId>com.bjpowernode</groupId>
<artifactId>ch01-maven-java</artifactId>
<version>1.0</version>
groupId
:组织名称,代码。是公司,团体或者单位的标识。这个值常使用公司域名的倒写。artifactId
:项目名称,如果groupId中有项目,此时当前的值就是子项目名。项目名称是唯一的。version
:版本,项目的版本号,使用的数字。由三位组成。例如:主版本号.次版本号.小版本号。- 注意:版本号中如果有-SNAPSHOT,表示快照,不是稳定的版本。
项目使用gav:
1、每个maven项目,都需要有一个自己的gav。
2、管理依赖,需要使用其他的jar,也需要使用gav作为标识。
搜索相关坐标的地址<<<
4、依赖 dependency
依赖:项目中要使用的其他资源(jar)。
需要使用maven表示依赖,管理依赖。通过使用dependency和gav一起完成依赖的使用。
需要在pom.xml文件中,使用dependencies和dependency,还有gav完成依赖的说明。
格式:表示我要找mysql项目的8.0.29版本的jar包。
<dependencies><!-- 日志 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version><packaging>jar</packaging>//表示此项目最终生成的是jar文件</dependency></dependencies>
- maven使用gav作为标识,从互联网下载依赖的jar包,下载到你的本机上,由maven管理项目使用的这些jar包。
- packaging:表示项目的打包类型,有jar,var,ear等等,默认是jar。
5、仓库
maven的仓库存放的是:
- 1、maven工具自己的jar包。
- 2、第三方的其他jar,比如项目中要使用mysql驱动。
- 3、自己写的程序,可以打包为jar,存放到仓库。
仓库的分类:
- 1、本地仓库(本机仓库):位于自己的计算机,它是磁盘中的某个目录。本地仓库:默认路径是自己登录操作系统的账号的目录中。/.m2/repository
- 2、修改本地仓库的位置:修改maven工具的配置文件
- 【1】创建一个目录,作为仓库使用。目录不要有中文和空格。目录不要太深。
<localRepository>D:/openrepository</localRepository>
在把这个路径下的文件都拷贝到我们自己创建的目录。
6、Maven的生命周期,插件和命令
-
Maven的生命周期:项目构建的各个阶段。包括清理,编译,测试,报告,打包,安装,部署。
-
插件:要完成构建项目的各个阶段,要使用maven命令,执行命令的功能是通过插件完成的,插件就是jar,一些类。
-
命令:执行Maven的功能是由命令发出的。比如:
mvn compile
三、单元测试
- Junit是一个单元测试的工具,在java当中经常使用。
- 单元:在java中指的是方法。一个方法就是一个单元,方法是测试的最小单位。
- 作用:使用Junit去测试方法是否完成了要求,开发人员自测。
1、使用单元测试
- 1、加入Junit的依赖(一些类和方法)‘
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>
- 2、在
src/test/java
目录中创建测试类文件,写测试代码
单元测试的建议:
【1】测试类的定义,名称一般是Test+要测试的类的名称
【2】测试类它的包名和要测试的类包名一样
【3】在类中定义方法,要测试的代码:
方法的定义:
- public方法
- 没有返回值
- 方法名称自定义(建议Test+)
- 方法没有参数
【4】在测试类中的方法,可以单独执行,测试类也可以单独执行。
2、创建测试类和测试方法
在pom.xml文件中加入下面代码
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>
在如下目录创建java的测试文件:
package com.powernode;
import org.junit.Assert;
import org.junit.Test;public class TestHelloMaven{
// 定义多个独立的测试方法,每个方法都是独立的@Testpublic void testAddNumber1(int n1,int n2){System.out.println("执行了测试类testAddNumber");HelloMaven hello=new HelloMaven();int res=hello.addNumber(10,20);//把计算结果res交给junit判断//期望值,实际值//断言类,判断两个结果是否相等,如果不等就会抛出异常。Assert.assertEquals(30,res);}@Testpublic void testAddNumber2(int n1,int n2){System.out.println("执行了测试类testAddNumber");HelloMaven hello=new HelloMaven();int res=hello.addNumber(20,30);//把计算结果res交给junit判断//期望值,实际值//断言类,判断两个结果是否相等,如果不等就会抛出异常。Assert.assertEquals(50,res);}}
3、命令
- 1、
mvn clean
:清理命令,作用是删除以前生成的数据,删除target目录。 - 2、
mvn compile
:编译命令,执行的是代码的编译,把src/main/java
目录中的java代码编译为class文件。同时把class文件拷贝到target/classes
目录。这个目录classes是存放类文件的根目录。(也叫做类路径classpath) - 3、
mvn test-compile
:编译命令,编译src/main/java
目录中的源文件,把生成的class文件拷贝到target/test-classes
目录。同时把src/test/resources
目录中的文件拷贝到test-classes
目录,同时把src/test/resources
目录中的文件拷贝到test-classes
目录 - 4、
mvn test
:测试命令,执行test-classes
目录的程序,测试src/main/java
目录中的主程序代码是否符合要求。 - 5、
mvn package
:打包,作用是把项目中的资源class文件和配置文件都放到一个压缩文件中,默认压缩文件是jar类型,web应用是war类型的。 - 6、
mvn install
:把生成的打包的文件,安装到maven仓库。
四、Maven与idea
1、idea集成Maven
idea有自带的maven,而我们要让idea使用我们自己安装的maven,这个过程叫做集成。
-DarchetypeCatalog=internal
2、创建基于maven的普通项目
首先创建一个空项目:
创建一个模块:
创建好项目了:
3、单元测试
注:这里如果不把java变成绿色的文件夹那么就无法在test里面创建java的class。
idea maven项目的test目录下,无法直接创建class?
按上面四个序号创建package和class文件:做一个简单的加法测试
public class HelloMaven {public int addNumber(int n1,int n2){return n1+n2;}public static void main(String[] args) {HelloMaven helloMaven=new HelloMaven();int res=helloMaven.addNumber(10,20);System.out.println("res="+res);}
}
public class TestHelloMaven {@Testpublic void testAddNumber1(){System.out.println("testAddNumber1~~~");HelloMaven hello = new HelloMaven();int res=hello.addNumber(10,20);Assert.assertEquals(30,res);}@Testpublic void testAddNumber2(){System.out.println("testAddNumber2~~~");HelloMaven hello = new HelloMaven();int res=hello.addNumber(20,30);Assert.assertEquals(50,res);}
}
4、maven的工具窗口
在界面的右侧:
更多推荐
【Maven】基础
发布评论