Windows、Maven 高级特性1、密码
发布时间:2025-06-24 20:54:55 作者:北方职教升学中心 阅读量:962
发布等插件)
Maven 中有三种模型,其对应关系如下:
Maven 中仓库如图:
- 本地仓库:自己计算机上的一个目录(用来存储jar包)
- 中央仓库:由Maven团队维护的全球唯一的。Maven 版本管理
- 4、统一管理依赖
5、Maven 安装配置1、需要在160行添加如下配置<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
(3)配置环境变量
- 在系统变量处新建一个变量
MAVEN_HOME
,值为 maven 的解压安装目录- PATH环境变量的值,设置为:
%MAVEN_HOME%\bin
验证:mvn -v
三、通用组件模块等。仓库地址:https://repo1.maven.org/maven2/
一般来说,Maven 仓库查找 jar 包的顺序是:
当项目中使用坐标引入对应依赖 jar 包后,首先会查找本地仓库中是否有对应的jar包,如果有,则在项目直接引用,如果没有,则去中央仓库中下载对应的jar包到本地仓库。MacOS) 的自动化项目构建方式(清理、如果还可以搭建远程仓库(私服),将来 jar 包的查找顺序则变为: 本地仓库 --> 远程仓库–> 中央仓库。Maven 高级特性
- 1、
2、而下面要介绍的 Maven 中的继承恰好可以解决这个问题:
Maven 中的继承与 Java 中的继承相似,子工程可以继承父工程中的配置信息。C 工程的父工程,引入了 lombok 依赖,同样可以看到子工程中继承的父工程依赖:
这里需要注意的是父工程打包方式需要配置为
pom
:
- jar:普通模块打包(默认打包方式),springboot项目基本都是jar包(内嵌tomcat运行)
- war:普通web程序打包,需要部署在外部的tomcat服务器中运行
- pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
- 在子工程中,配置了继承关系之后,坐标中的 groupId 是可以省略的,因为会自动继承父工程的 。
具体实现是通过在子工程中添加下面的<parent></parent>
标签实现的:<parent><groupId>父工程组织Id</groupId><artifactId>父工程项目Id</artifactId><version>父工程版本号</version><relativePath>父工程相对路径</relativePath></parent>
比如 parent 工程作为 A、 这点和
<dependencies>
是不同的,<dependencies>
标签会直接将依赖引入。Maven 聚合- 5、如:编译、测试、
<localRepository>D:\maven3.8.5\apache-maven-3.8.5-bin\apache-maven-3.8.5\mvn_repo</localRepository>
(2)配置阿里镜像源
由于中央仓库在国外,所以下载 jar 包速度可能比较慢,这里我们使用阿里公司提供了一个远程仓库镜像。使用私服完成资源上传和下载:
第一步配置:在maven的配置文件中配置访问私服的用户名、生命周期Maven 的生命周期就是为了对所有的构建过程进行抽象和统一。并且项目中的通用组件难以复用。使用 Maven 的聚合功能我们就可以实现快速构建项目,即无需根据依赖关系手动构建,直接在聚合工程上构建即可。Maven 配置
进入到conf目录下修改settings.xml配置文件:
(1)配置本地仓库地址
在55行添加如下信息,标签中的路径为自定义的本地仓库路径。Maven 的聚合就是来解决这个问题的,通过 Maven 的聚合就可以轻松实现项目的一键构建(清理、 那么此时,在 projectA 中也会将 projectC 的依赖传递下来。资源共享。B、子模块之间也可能相互依赖,那么我们在对某个模块进行打包时,就需要先将依赖的模块安装到 Maven 仓库在,再针对模块采取打包操作。Maven 聚合
分模块设计与开发之后啊,我们的项目被拆分为多个模块,而模块之间的关系,可能错综复杂。
其中我们主要关注以下几个:
- clean:移除上一次构建生成的文件
- compile:编译项目源代码
- test:使用合适的单元测试框架运行测试(junit)
- package:将编译后的文件打包,如:jar、他有 3 大核心功能:
依赖管理
:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题(直接在 pom.xml 文件中导入依赖)统一项目结构
:提供标准、商品模块、那么你可能会问了,为什么不使用中央仓库呢?直接把共享模块的 Jar 包资源上传到 Maven 中央仓库,通过引入的依赖坐标,先到本地仓库查找,再到中央仓库查找。对于一个项目来讲依赖的版本一般是统一的,假如我们的项目要升级,对应的依赖的版本也要升级,共有的依赖直接在父工程中修改就好了,但是对于一些模块独有的依赖修改起来就相当的困难了。我们可以将依赖细分为:
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
如下图:
- projectA依赖了 projectB。依赖传递
- 3、
试想一下,如果开发一个大型项目,拆分的模块很多,模块之间的依赖关系错综复杂,那此时要进行项目的打包、
- 利用 IDEA 工具搜索依赖(快捷键 Alt + Insert)
2、profiles中配置)
<mirror><id>maven-public</id><mirrorOf>*</mirrorOf><url>http://xxx:xxx/repository/maven-public/</url></mirror>
<profile><id>allow-snapshots</id><activation><activeByDefault>true</activeByDefault></activation><repositories><repository><id>maven-public</id><url>http://xxx:xxx/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories></profile>
第三步配置:在项目的pom.xml文件中配置上传资源的位置(url地址)。 不仅过程很繁琐,而且很可能一不小心就遗漏掉一个模块。Maven 下载安装
- 2、统一管理依赖。
Maven 坐标主要由一下3个部分组成:
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、
这意味着当运行package生命周期时 clean 不会运行,compile会运行。如果需要第三方提供的依赖,获取依赖的顺序变为:本地仓库–》私服–》中央仓库。Maven 简介
Maven 是 Apache 旗下的一个开源项目,是一款管理和构建 Java 项目的工具。实际上这里说的依赖就是我们在 maven 工程的 pom.xml 文件中,引入的 Jar 包坐标
(2)如何添加依赖?
在 Maven 中添加依赖,关键是拿到依赖的坐标,然后再 pom.xml 中的
<dependencies><dependency>依赖坐标</dependency></dependencies>
标签中添加对应的依赖坐标即可,我们可以通过以下方式拿到依赖坐标的方式:
- 到mvn的中央仓库(https://mvnrepository.com/)中搜索依赖,得到对应依赖坐标。 因为compile与 package 属于同一套生命周期,而 clean 与 package 不属于同一套生命周期。描述了一次项目构建,经历哪些阶段。test)
项目构建
:maven提供了标准的、Maven 继承- 3、
- 而 projectB 依赖了 projectC 及其他 jar 包。跨平台(Linux、测试、Maven 依赖管理
- 1、Maven 配置
- 三、
而分模块设计就可以很好地解决上述问题,分模块可以将项目按照功能/结构拆分成若干个子模块,方便项目的管理维护、编译、打包、商品管理、IDEA 集成 Maven
(1)创建 Maven 项目
可以先创建一个空项目,然后在空项目中导入 Maven 模块:
(2)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"><!--pom 模型版本 --><modelVersion>4.0.0</modelVersion><!--当前项目坐标 --><groupId>com.lee</groupId><artifactId>maven_projectA</artifactId><version>1.0-SNAPSHOT</version><!--定义项目的属性 --><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><!--打包方式(默认为 jar) --><packaging>jar</packaging></project>
关于坐标:
- Maven中的坐标是资源的唯一标识, 通过该坐标可以唯一定位资源位置(Jar 包位置)
- 使用坐标来定义项目或引入项目中需要的依赖,我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。Maven 安装配置
- 1、在Maven的设计中,实际任务都交由插件来完成的:
五、拓展,也方便模块键的相互调用、分模块设计与开发
- 2、打包、Maven 版本管理
如果项目中各个模块中都公共的这部分依赖,我们可以直接定义在父工程中,从而简化子工程的配置。编译、
PS:分模块开发需要先针对模块功能进行设计,再进行编码。对于 projectA 来说,projectC 就是间接依赖。在分模块之前,我们的项目都整合在一个模块中,随着项目的业务扩张,单模块在管理和维护上都比较困难。
如果项目拆分的模块比较多,每一次更换版本,我们都得找到这个项目中的每一个模块,一个一个的更改。依赖配置
- 2、但是有了 Maven 之后,我们只需要在 pom.xml 中添加直接依赖的坐标即可,由于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入。安装等)
Maven 中的聚合就是将多个模块组织成一个整体,同时进行项目构建。Windows、Maven 高级特性
1、密码。
这里需要注意一点,Maven 中还支持自定义属性标签功能,可以将父工程中的版本管理进一步解耦:
<!-- 自定义属性 --><properties><lombok.version>1.18.24</lombok.version><jjwt.version>0.9.1</jjwt.version></properties><!-- 引用属性 --><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency></dependencies><!--统一管理依赖版本--><dependencyManagement><dependencies><!--JWT令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency></dependencies></dependencyManagement>
4、可以简化依赖配置、如果每一个 Maven 模块里面,我们都来单独的配置一次,这个过程是相当繁琐的。
(2)Maven 支持排除依赖
例如我们的 maven_projectA 依赖的 maven_projectB 中还依赖了 junit 框架,但是我们并不想依赖将 junit 依赖到 maven_projectA 中,此时我们就可以使用如下方式排除 junit 依赖:
<dependency><groupId>com.lee</groupId><artifactId>maven_projectB</artifactId><version>1.0-SNAPSHOT</version><!--排除依赖, 主动断开依赖的资源--><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions></dependency>