一、maven核心概念
1、Maven工程约定目录结构
2、pom文件
3、仓库
4、Maven的生命周期
5、Maven的常用命令
6、插件
7、坐标(gav)
8、依赖(dependency)
二、maven约定的目录结构
三、maven项目创建及其下载的东西
1、使用命令编译maven项目
在和pom.xml平级的文件夹下打开cmd命令窗口,运行该命令mvn complile
,可以编译src/main目录下所有的java文件
第一次下载的话比较慢,当资源下载完成之后,以后使用就会很快了
2、下载的东西
a)之后maven会开始下载东西
maven工具执行的操作需要很多插件(java类--jar文件)完成的,都是下载一些jar文件,叫做插件,插件是完成某些功能
b)下载的东西存放
一般存放到默认仓库(本机仓库):C:\Users\Administrator(登录操作系统的用户名)\.m2\repository
https://repo.maven.apache.org :中央仓库的地址
c)在根目录生成target目录
target目录为结果目录,maven编译的java程序,最后的class文件都放在target目录中
3、修改本地仓库地址(设置本机存放资源的目录位置)
a)修改maven的配置文件settings.xml,maven安装目录/conf/settings.xml
先备份 settings.xml(备份一份完整的防止)b)打开settings.xml文件,修改 <localRepository> 标签中的,指定你的目录(不要使用中文目录)
D:\mavenwork\repositoryc)设置下载资源的镜像(下载jar包时更快)
打开settings.xml文件,找到<mirrors></mirrors>
标签对,里面配置镜像
<!-- 配置阿里的镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
四、仓库
1、仓库概述
仓库是存放东西的, 存放maven使用的jar 和 我们项目使用的jar
maven使用的插件(各种jar);我项目使用的jar(第三方的工具)
2、仓库的分类
a)本地仓库
就是自己的个人计算机上的文件夹,存放各种jar
b)远程仓库
中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,https://repo.maven.apache.org :中央仓库的地址
中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像
私服,在公司内部,在局域网中使用的, 不是对外使用的
3、仓库的使用
maven仓库的使用不需要人为参与。 他会自己去找,先找本地仓库,如果没有就去镜像中,再没有就到中央仓库中找
五、pom文件项目对象模型
1、modelVersion
Maven 模型的版本,对于 Maven2 和 Maven3 来说,它只能是 4.0.0
<modelVersion>4.0.0</modelVersion>
2、坐标
a)坐标:唯一值,在互联网中唯一标识一个项目
b)groupId 组织 id,一般是公司域名的倒写。 格式可以为:
1. 域名倒写。 例如 com.baidu
2. 域名倒写+项目名。例如 com.baidu.appolo
c)artifactId
项目名称,也是模块名称,对应 groupId 中项目中的子项目
d)version
项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带-SNAPSHOT。version 使用三位数字标识,例如 1.1.0
e)生成项目唯一坐标
groupId 、artifactId 、version 三个元素生成了一个Maven 项目的基本坐标,在众多的maven 项目中可以唯一定位到某一个项目。坐标也决定着将来项目在仓库中的路径及名称
<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定版本号</version>
f)搜索使用的中央仓库
https://mvnrepository.com/ 搜索使用的中央仓库, 使用groupId 或者 artifactId作为搜索条件
3、项目打包packaging
packaging: 打包后压缩文件的扩展名,默认是jar ,web应用是war。可以不写,
4、依赖
dependencies 和 dependency,相当于java代码中的import
例如:项目中需要使用myql驱动
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
<!--有多个依赖 可以写多个 -->
</dependencies>
5、properties
设置属性
<properties>
<!--maven构建项目使用的是utf-8, 避免中文的乱码-->
<project.build.sourceEncoding>UTF - 8</project.build.sourceEncoding>
<!--编译java代码使用的jdk版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<!-- 你的java项目应该运行在什么样的jdk版本-->
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
6、build
maven在进行项目的构建时, 配置信息,例如指定编译java代码使用的jdk的版本等
在build中可以配置插件,我们可以在网上搜索到这些插件,都有相关信息
<!-- build 配置maven构建项目的参数设置 -->
<build>
<!-- plugins 配置插件 -->
<plugins>
<!-- plugin 配置具体的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<!-- 插件名称 -->
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<!-- configuration 配置插件的信息 -->
<configuration>
<!-- 告诉maven 写的代码是jdk1.8上编译 -->
<source>1.8</source>
<!-- 我们程序应该运行在1.8的jdk上 -->
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
六、生命周期
1、maven生命周期
就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
2、maven的命令
maven独立使用,通过命令,完成maven的生命周期的执行
maven可以使用命令,完成项目的清理,编译,测试等等
3、maven的插件
maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类4、单元测试
a)使用junit依赖
junit是一个专门测试的框架(工具),可以 测试的是类中的方法, 每一个方法都是独立测试的。方法是测试的基本单位(单元)。
b)maven借助单元测试,批量的测试你类中的大量方法是否符合预期的
c)使用步骤
c1)在pom.xml文件中假如单元测试依赖
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
c2)在maven项目中的src/test/java目录下,创建测试程序
推荐创建类和方法的名字规范:测试类的名称 是Test + 你要测试的类名;测试的方法名称 是:Test + 方法名称
例如你要测试HelloMaven,创建测试类 TestHelloMaven
要测试的方法:
@Test
public void testAdd(){
测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
1.方法是public的,必须的
2.方法没有返回值, 必须的
3.方法名称是自定义的,推荐是Test + 方法名称
4.在方法的上面加入 @Test
5、maven常用命令
执行命令时,要在pom文件同级目录下哦
1)mvn clean
删除原来编译和测试的目录,即 target 目录,但是已经 install 到仓库里的包不会删除
2)mvn compile
编译主程序(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)
编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面
把main/resources目录下的所有文件都拷贝到target/classes目录下
3)mvn test-compile
编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)
编译test/java/目录下的java 为class文件, 同时把class拷贝到 target/test-classes目录下面
把test/resources目录下的所有文件都拷贝到target/test-classes目录下
4)mvn test
在运行该命令之后,会把上面的命令都先运行一遍:clean、compile、test-compile
会在target下生成一个目录surefire-reports,保存测试结果
5)mvn package
打包主程序,会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包
只包含src/main目录下的文件
在target目录下生成一个jar文件,文件名是:项目名称+版本号
6)mvn install
会把本工程打包,并且按照本工程的坐标保存到本地仓库中,打包到本地仓库之后在本地仓库中可以根据坐标找到
安装之后就可以给别人用了,别人可以拿来用,使用的时候根据坐标添加依赖就可以
7)mvn deploy(不常用)
部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中还会自动把项目部署到 web 容器中)。
标签:maven,target,编译,--,核心,jar,Maven,仓库,目录 From: https://www.cnblogs.com/hyy-0/p/17632451.html