Maven仓库&pom文件&编译插件&生命周期&&依赖范围

Maven 仓库

  1. Maven中的仓库是用来存放maven构建的项目和各种依赖的(Jar包)。

Maven的仓库分类

  1. 本地仓库: 位于自己计算机中的仓库, 用来存储从远程仓库或中央仓库下载的插件和 jar 包,默认在当前用户下的.m2文件夹下
  2. 远程仓库: 需要联网才可以使用的仓库,阿里提供了一个免费的maven 远程仓库。
  3. 中央仓库: 在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件

配置阿里云远程仓库

  1. Maven默认的远程仓库是在国外, 所以下载jar包时速度会非常慢,为提升下载依赖的速度,可以使用阿里云的仓库

  2. 在maven安装目录中,进入 conf文件夹, 可以看到一个 settings.xml 文件,打开 settings.xml,找到<mirror>标签 , 下面的内容复制到中即可

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

Maven-POM

  1. 每个maven工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的信息、项目依赖、引入插件等等。
  2. pom.xml 代表工程对象模型,是Maven工作时的基本组件,pom.xml 文件被放在工程根目录下
  3. pom.xml中包含了关于工程和各种配置细节的信息,Maven使用这些信息构建工程
  4. 一个Maven工程就是由 groupId , artifactId 和 version 作为唯一标识,在引用其他第三方库的时候,也是通过这3个变量确定。
  5. 在maven中坐标就是为了定位一个唯一确定的jar包。
  6. maven 的依赖管理, 是对项目所依赖的 jar 包进行统一管理。

Maven主要标签

标签含义
groupId定义当前Maven组织名称,通常是公司名
artifactId定义实际项目名称
version定义当前项目的当前版本
packaging打包类型,jar:执行 package 会打成 jar 包 war:执行 package 会打成 war 包
dependency使用 <dependency> 声明一个依赖后,Maven就会自动下载这个依赖包

POM样例

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

	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>3.1.0</version> 
		</dependency>
	</dependencies>
</project>
  1. groupId: 这是工程组的标识。它在一个组织或者项目中通常是唯一的。
  2. artifactId:这是工程的标识。它通常是工程的名称
  3. version:这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。

Maven编译插件

<!-- properties 是全局设置,可以设置整个maven项目的编译器 JDK版本 -->
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<!-- 重点 -->
	<maven.compiler.source>11</maven.compiler.source>
	<maven.compiler.target>11</maven.compiler.target>
</properties>
<!-- 在build中 需要指定一下项目的JDK编译版本,maven默认使用1.5版本进行编译注意 build 与 dependencies是平级关系,标签不要写错位置 -->
<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.8.1</version>
			<configuration>
				<release>11</release>
			</configuration>
		</plugin>
	</plugins>
</build>

Super POM

  1. 所有的POM都继承自一个父POM(无论是否显式定义了这个父PO),父POM也被称为Super POM,包含一些可以被继承的默认设置
  2. Maven 使用 effective pom(Super pom 加上工程自己的配置)来执行相关的目标,帮助我们在 pom.xml 中做尽可能少的配置,当然这些配置可以被方便的重写。
  3. 查看 Super POM 默认配置命令:mvn help:effective-pom

Maven 生命周期

  1. maven项目生命周期:使用 maven 完成项目的构建包括:清理、编译、测试、部署等过程,maven 将这些过程规范为一个生命周期,如下所示是生命周期的各各阶段: 在这里插入图片描述

    命令说明
    mvn compile完成编译操作 , 执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。
    mvn clean执行完毕后,会将target目录删除.
    mvn test执行完毕后,会在target目录中生成三个文件夹:surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件)。
    mvn package完成打包操作, 执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war。
    mvn install执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用
  2. idea中安装好maven后, 在界面左侧有一个maven视图, 里面有对应的命令插件,可以执行上面表格中的命令
    在这里插入图片描述

IDEA中Maven插件的工具栏

在这里插入图片描述

  1. 根据pom.xml文件重新导入所有Maven项目和依赖,刷新
  2. 创建源码(重新编译)并更新目录
  3. 下载源码或文档
  4. 添加Maven项目
  5. 执行生命周期中的阶段,选中lifecycle选项中生命周期中的一个阶段(phase),才能点击执行。
  6. 运行Maven生命周期或插件
  7. 切换离线模式,就是关闭和远程仓库的链接,从本地仓库中获取,也不能将jar包提交到远程仓库
  8. 是否跳过测试,点击选中就可以跳过测试,在点击选择取消跳过测试
  9. 展示当前选中的maven项目jar包的依赖,并且可以直接在图形化依赖图上进行排除依赖操作
  10. 收起下面展开的视图
  11. 跳转到maven的Setting页面

依赖范围

  1. 若A模块 依赖 B模块,需要在 A 的 pom.xml 文件中添加 B 的坐标,添加坐标时需要指定依赖范围,依赖范围包括:
依赖范围说明
compile编译范围,指 A在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
providedprovided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。
runtimeruntime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。
testtest 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以test范围依赖不会被打包。
systemsystem 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值