Maven个人笔记

1.解压部署Maven核心程序

  • ①下载及安装Maven

Maven最新版本下载链接:http://maven.apache.org/download.cgi
Linux系统下载: apache-maven-3.6.1-bin.tar.gz
Window系统下载: apache-maven-3.6.1-bin.zip
在这里插入图片描述
下载完成后将apache-maven-3.6.1-bin.zip解压到一个非中文无空格的目录下。

  • ②配置环境变量

MAVEN_HOME
D:\DevInstall\apache-maven-3.6.1(这是Maven安装路径)
path
D:\DevInstall\apache-maven-3.6.1\bin(Maven安装路径的bin目录)

  • ③查看Maven版本信息验证安装是否正确

按window+R输入cmd运行命令提示符窗口,然后输入mvn -v,如若出现如下图所示,则代表环境变量已经配好,Maven安装正确,并可以查看Maven版本。
在这里插入图片描述

2.修改相关的setting.xml配置

  • ①默认本地仓库位置:~.m2\repository

~表示当前用户的家目录,例如:C:\Users[你当前登录系统的用户名]

  • ②指定本地仓库位置的配置信息文件:apache-maven-3.2.2\conf\settings.xml

  • ③在settings.xml下添加如下内容修改本地仓库路径:

<localRepository>[需要创建的本地仓库的目录]</localRepository>

如:

 <localRepository>E:/maven/repository</localRepository>

在这里插入图片描述

  • ④修改中央仓库

若不在setting.xml配置文件中修改中央仓库的路径的话,所需下载的jar包Maven会直接从Maven官网下载,这样有的时候下载速度比较慢,所以我们把路径修改成国内阿里云的。
在setting中插入如下代码就可以了:

<mirrors>
	<mirror>
		<id>alimaven</id>
		<name>aliyun maven</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
		<mirrorOf>central</mirrorOf>
	</mirror>
  </mirrors>

在这里插入图片描述

  • ⑤指定Maven使用的jdk为1.8版本(个人喜好)

在setting.xml配置文件插入如下代码:

<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>

在这里插入图片描述

3.Maven工程

  • ①目录结构(以Hello工程为例)

    在这里插入图片描述

  • ② 构建过程的几个主要环节

  • [1]清理:删除以前的编译结果,为重新编译做好准备。

  • [2]编译:将 Java 源程序编译为字节码文件。

  • [3]测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。

  • [4]报告:在每一次测试后以标准的格式记录和展示测试结果。

  • [5]打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应 war 包。

  • [6]安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。

  • [7]部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

  • ③运行几个基本的Maven命令

      mvn compile	编译
      mvn clean	清理
      mvn test	测试
      mvn package	打包
    

※注意:运行Maven命令时一定要进入pom.xml文件所在的目录!

4.Maven核心概念

  • ①POM

  • ②约定的目录结构

  • ③坐标

在工程的pom.xml文件中使用如下三个标签在 Maven 的仓库中唯一的确定一个 Maven 工程(gav)。
[1]groupid:公司或组织的域名倒序+当前项目名称
[2]artifactId:当前项目的模块名称
[3]version:当前模块的版本
如:

<groupId>com.atguigu.maven</groupId>  
<artifactId>Hello</artifactId>  
<version>0.0.1-SNAPSHOT</version> 

如何通过坐标到仓库中查找 jar 包?
[1]将 gav 三个向量连起来

com.atguigu.maven+Hello+0.0.1-SNAPSHOT 

[2]以连起来的字符串作为目录结构到仓库中查找

com/atguigu/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar 
  • ④依赖管理

依赖的目的是什么 ?
当 A jar 包用到了 B jar 包中的某些类时,A 就对 B 产生了依赖,这是概念上的描述。那么如何在项目 中以依赖的方式引入一个我们需要的 jar 包呢? 答案非常简单,就是使用 dependency 标签指定被依赖 jar 包的坐标就可以了。
如:

<dependency> 
	<groupId>com.atguigu.maven</groupId>  
	<artifactId>Hello</artifactId>  
	<version>0.0.1-SNAPSHOT</version>
	 <scope>compile</scope> 
  </dependency>

依赖的范围
大家注意到上面的依赖信息中除了目标 jar 包的坐标还有一个 scope 设置,这是依赖的范围。依赖的范 围有几个可选值,我们用得到的是:compile、test、provided 三个。
在这里插入图片描述
依赖的传递性
A 依赖 B,B 依赖 C,A 能否使用 C 呢?那要看 B 依赖 C 的范围是不是 compile,如果是则可用,否则不 可用。
在这里插入图片描述
依赖的排除
如果我们在当前工程中引入了一个依赖是 A,而 A 又依赖了 B,那么 Maven 会自动将 A 依赖的 B 引入当 前工程,但是个别情况下 B 有可能是一个不稳定版,或对当前工程有不良影响。这时我们可以在引入 A 的时 候将 B 排除。
例:
在这里插入图片描述
配置方式 :

<dependency>     
	<groupId>com.atguigu.maven</groupId>   
	<artifactId>HelloFriend</artifactId>    
	<version>0.0.1-SNAPSHOT</version>  
	<type>jar</type>      
	<scope>compile</scope>  
	<exclusions>      
		<exclusion>           
			<groupId>commons-logging</groupId>              
			<artifactId>commons-logging</artifactId>      
		 </exclusion>  
	</exclusions>
  </dependency> 

排除后的效果
在这里插入图片描述
统一管理所依赖 jar 包的版本
对同一个框架的一组 jar 包最好使用相同的版本。为了方便升级框架,可以将 jar 包的版本信息统一提 取出来
[1]统一声明版本号

<properties>      
	<atguigu.spring.version>4.1.1.RELEASE</atguigu.spring.version> 
</properties> 

[2]统一字符集

<properties>      
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

依赖的原则:解决 jar 包冲突
[1]路径最短者优先
在这里插入图片描述
[2]路径相同时先声明者优先 (这里“声明”的先后顺序指的是 dependency 标签配置的先后顺序)
在这里插入图片描述

  • ⑤仓库管理

  • ⑥生命周期

  • ⑦插件和目标

  • ⑧继承

创建父工程
创建父工程和创建一般的 Java 工程操作一致,唯一需要注意的是:打包方式处要设置为 pom.
在子工程中引用父工程

<parent> 
	<!-- 父工程坐标 --> 
	<groupId>...</groupId> 
	<artifactId>...</artifactId> 
	<version>...</version> 
	<relativePath>从当前目录到父项目的 pom.xml 文件的相对路径</relativePath> 
</parent

如:
在这里插入图片描述
此时如果子工程的 groupId 和 version 如果和父工程重复则可以删除。

在父工程中管理依赖
将 Parent 项目中的 dependencies 标签,用 dependencyManagement 标签括起来
如:

<dependencyManagement> 
	<dependencies> 
		<dependency> 
			<groupId>junit</groupId> 
			<artifactId>junit</artifactId> 
			<version>4.9</version> 
			<scope>test</scope> 
		</dependency> 
	</dependencies> 
</dependencyManagement> 

在子项目中重新指定需要的依赖,删除范围和版本号

<dependencies> 
	<dependency> 
		<groupId>junit</groupId> 
		<artifactId>junit</artifactId> 
	</dependency> 
</dependencies> 

  • ⑨聚合

为什么要使用聚合?
将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进 行 clean 操作。而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作。

如何配置聚合?
在总的聚合工程中使用 modules/module 标签组合,指定模块工程的相对路径即可
如:

<modules> 
	<module>../Hello</module> 
	<module>../HelloFriend</module> 
	//......
</modules> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值