学习笔记 maven

maven环境配置

在这里插入图片描述

在这里插入图片描述

cmd中输入mvn -v即可查看mvn配置成功

maven配置文件

Maven有两个settings.xml配置文件,一个是全局配置文件,一个是用户配置文件

全局配置文件目录:

E:\maven\apache-maven-3.5.2\conf.settings.xml

%MAVEN_HOME%/conf/settings.xml 是maven全局的配置文件。
该配置文件中配置了本地仓库的路径,默认就是:~/.m2/repository。 其中~表示当前用户路径C:\Users[UserName]。

我的:
C:\Users\吕明辉.m2
用户配置
~/.m2/settings.xml是用户的配置文件(默认没有该文件,需要将全局配置文件拷贝过来在进行修改)

注意:一般本地仓库的地址不使用默认配置,通常情况下需要在用户配置中,配置新的仓库地址。
配置步骤如下:
第一步:创建一个本地仓库目录,比如D:\java\repository\maven_repository。
第二步:复制maven的全局配置文件到~/.m2目录下,即创建用户配置文件

第三步:修改maven的用户配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
本地仓库:
<localRepository>D:\repository</localRepository>
镜像配置:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>

默认配置jdk1.8:
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
</settings>

Maven 工程结构

项目名称
src
	main
		java  存放项目的.java文件
		resources  存放项目配置文件jdbc.properties
	test
		java  存放所有测试.java文件,如JUnit测试类
		resources  测试资源文件
	target  目标文件输出位置例如.class、.jar、.war文件
	pom.xml  maven项目核心配置文件

IDEA集成

1 设置maven安装目录

在这里插入图片描述

Maven 命令

需要在pom.xml所在目录中执行以下命令。

1. mvn compile
执行 mvn compile命令,完成编译操作
执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。

2 mvn clean
执行 mvn clean命令
执行完毕后,会将target目录删除。

3 mvn test
执行 mvn test命令,完成单元测试操作
执行完毕后,会在target目录中生成三个文件夹:surefire、surefire-reports(测试报告)、test-
classes(测试的字节码文件)

4 mvn package
执行 mvn package命令,完成打包操作
执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war

5 mvn install
执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作
执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用

6 mvn clean compile命令
cmd 中录入 mvn clean compile命令
组合指令,先执行clean,再执行compile,通常应用于上线前执行,清除测试类

mvn clean install命令
cmd 中录入 mvn clean install 查看仓库,当前项目被发布到本地仓库中
组合指令,先执行clean,再执行install,将项目打包
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包
安装————将打好的包发布到本地仓库中

Maven 相关概念

坐标

groupId:定义当前Maven组织名称
artifactId:定义实际项目名称
version:定义当前项目的当前版本

依赖管理

就是对项目中jar 包的管理。可以在pom文件中定义jar包的GAV坐标,管理依赖。
依赖声明主要包含如下元素:

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
依赖范围

在这里插入图片描述

其中依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
compile : 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
test :测试依赖范围。只对于测试classpath有效
provided :已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因 为由容器已经提供,例如servlet-api
runtime :运行时提供。例如:jdbc驱动

依赖传递

如果B中使用A,C中使用B,则称B是C的直接依赖,而称A是C的间接依赖。
C->B B->A
C直接依赖B
C间接依赖A

依赖冲突

如果直接依赖与间接依赖中包含有同一个坐标不同版本的资源依赖,以直接依赖的版本为准(就近原则)
如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的版本为准(就近原则)

可选依赖
<optional> true/false </optional> 

是否可选,也可以理解为是否向下传递。
在依赖中添加optional选项决定此依赖是否向下传递,如果是true则不传递,如果是false就传递,默认为false。

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>

<!--可选依赖-->
<optional>false</optional>

</dependency>
排除依赖

排除依赖包中所包含的依赖关系,不需要添加版本号。
如果在本次依赖中有一些多余的jar包也被传递依赖过来,如果想把这些jar包排除的话可以配置exclusions进行排除。

<!--排除依赖-->
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>

生命周期

Maven生命周期就是为了对所有的构建过程进行抽象和统一。包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤

生命周期可以理解为构建工程的步骤。
在Maven中有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期
分别是:

  • Clean Lifecycle : 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle : 构建的核心部分,编译,测试,打包,部署 等等。
  • Site Lifecycle : 生成项目报告,站点,发布站点

再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

Maven插件

Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。每个插件都能实现一个功能,每个功能就是一个插件目标。Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务。

继承

<packaging>jar</packaging>

工程的打包方式,中间可以是jar,war,pom,默认是jar
父工程是用pom。

创建一个父工程,只有pom文件。
在pom文件中管理版本号

<?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.imcode</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>i-maven-parent</artifactId>
<packaging>pom</packaging>
<properties>
<junit.version>4.12</junit.version>
</properties>
<!--依赖声明标签-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>

创建子工程,在pom文件中:

<?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>
<parent>
<artifactId>i-maven-parent</artifactId>
<groupId>com.imcode</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>i-maven-01</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值