maven详解

一、Maven基础

1. Maven概述

1.1、Maven是什么

  • Maven的本质是一个项目管理工具,将项目开发管理过程抽象成一个项目对象模型(POM)
  • POM(Project Object Model):项目对象模型,把一个项目以对象的形式进行管理
  • Maven的核心功能:是合理叙述项目间的依赖关系,通俗点就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包,其本质就是通过配置pom.xml来获取jar包,当然这是在该项目必须是maven项目的前提下。
  • 我们这样来理解maven项目,就是在java项目和web项目上裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能,即通过pom.xml添加jar包

1.2、Maven的作用

  • 项目构建:提供标准的、跨平台的自动化的项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
  • 统一开发结构:提供标准的、统一的项目结构

Maven可以帮我们:

  1. 构建工程,
  2. 管理jar,
  3. 编译代码,
  4. 自动运行单元测试,
  5. 打包,
  6. 生成报表,
  7. 部署项目,生成web站点。
  • 在这里插入图片描述

1.3、环境变量配置

  1. 新建MAVEN_HOME,值为安装目录,bin目录的上一层
    在这里插入图片描述
  2. 再Path中新建%MAVEN_HOME%\Bbin
    在这里插入图片描述

2. 两个基本概念

2.1、仓库

  • 仓库:仓库用于存储资源,包含各种jar包。
  • 仓库分类:
    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
    • 远程仓库:非本机电脑上的仓库,为本地仓库提供资源
      • 中央仓库:Maven团队维护,存储所有资源的仓库
      • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源。相当于一个局域仓库,可以复用资源。
  • 私服的作用:
    • 保存具有版权的资源,包含购买或自主研发的jar。
      • 中央仓库的jar都是开源的,不能存储具有版权的资源。
    • 一定范围内共享资源,仅对内部开放,不对外共享。
      在这里插入图片描述

2.2、坐标

  • 坐标:描述仓库中资源的位置。
  • 坐标的主要组成:
    • groupId(组织ID):定义当前maven项目所属组织名称(通常是域名的反写,例如:org.mybatis)
    • artifactId(项目ID):定义当前maven项目名称(通常是模块名称,例如CRM、SMS)
    • version(版本号):定义当前项目版本号
    • packaging:定义该项目的打包方式。这不是maven的组成部分,但是我们需要使用。
  • Maven坐标的作用:使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。

3. 仓库配置

3.1、本地仓库配置

Maven启动后,会自动保存下载的资源到本地仓库。

  • 默认位置是:C:\用户\用户名\.m2\repository
  • 自定义位置:在安装目录下conf/settings.xml中<localRepository>添加自定义目录,该标签已被注释需要自行查找,例如
    <localRepository>D:\SDE\apache-maven-3.8.7-bin_2\repository</localRepository>
    

3.2、远程仓库配置

默认情况下我们从中央服务器下载资源默认都是从国外服务器下载,但从国外服务器下载速度很慢,为了解决这个问题阿里配置了镜像仓库,我们可以通过在setting.xml中配置,从阿里镜像仓库下载资源。

在安装目录下conf/settings.xml文件中找到<mirrors>标签,在标签内添加以下标签:

<mirrors>
	<!-- 配置镜像地址 -->
	<mirror>
		<!-- 镜像的唯一标识符,用来区分不同的mirror元素 -->
		<id>nexus-aliyun</id>
		<!-- 对哪种仓库进行镜像,也就是代替哪个仓库 -->
		<mirrorOf>central</mirrorOf>
		<!-- 镜像名称 -->
		<name>Nexus aliyun</name>
		<!-- 镜像url -->
		<url>http://maven.aliyun.com//nexus/content/groups/public</url>
	</mirror>
</mirrors>

3.3、setting文件的区别

  • 全局setting,以上做的配置都属于全局配置,对任何版本的maven都生效。
  • 用户setting,若我们要对不同版本做不同的配置可以自定义用户配置。
    • 配置方法不做介绍。

4. Maven工程目录结构

4.1、手动搭建maven目录

注意:

  • java-project这一级开始才是Maven工程
  • 和src同级的pom.xml不是我们创建的
    在这里插入图片描述

4.2、手动构建Maven项目命令

搭建好目录以后,我们可以在java-project目录中打开命令终端,执行maven命令。

  • mvn compile:编译,会根据pom.xml的内容下载所需插件到仓库中。
  • mvn clean:清理,删除编译时下载的所有插件
  • mvn test:测试程序(项目),第一次测试会下载测试所需插件,测试完后会生成surefire-reports文件里面有测试报告。
  • mvn package:打包,打包源程序(项目),第一次打包会下载所需插件。
  • mvn install:将项目安装到本地仓库。

一次可以使用多个命令,用空格分割。

5. Maven配置介绍

<!-- 指定版本和字符集 -->
<?xml version="1.0" encoding="utf-8"?>
<!-- 这里面才是真正的maven工程配置 -->
<project>
	<!-- 指定pom的模型版本 -->
	<modelVersion>4.0.0</modelVersion>
	<!-- 打包方式,war为web工程,jar为Java工程 -->
	<packaging>war</packaging>

	<!-- 组织ID,定义当前maven项目所属组织名称(通常是域名的反写,例如:org.mybatis) -->
	<groupId>com.demo</groupId>
	<!-- 项目ID,即项目名称 -->
	<artifactId>DEMO</artifactId>
	<!-- 版本号,release线上,snapshot为开发版 -->
	<version>1.0-SNAPSHOT</version>

	<!-- 设置当前工程的所有依赖 -->
	<dependencies>
		<!-- 具体的依赖 -->
		<denpendency>
			<groupId></groupId>
			<artifactId></artifactId>
			<version></version>
		</denpendency>
	</dependencies>

	<!-- 构建,配置插件 -->
	<build>
		<!-- 设置插件 -->
		<plugins>
			<!-- 具体插件配置 -->
			<plugin>
				<!-- 插件仓库坐标配置 -->
				<groupId></groupId>
				<artifactId></artifactId>
				<version></version>
				<!-- 生命周期配置 -->
				<executions>
					<!-- 具体生命周期配置 -->
					<execution>
						<!-- 打包方式 -->
						<goals>
						<!-- 具体打包方式 -->
							<goal>jar</goal>
						</goals>
						<!-- 执行的声明周期 -->
						<phase>test</phase>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

5.1、依赖传递

依赖具有传递性(相当于继承性):

  • 直接依赖:在当前项目通过依赖配置建立的依赖关系。
  • 间接依赖:依赖的依赖是依赖的别人的依赖,即当前项目间接继承

在项目中,我们可以把别的项目的坐标作为自己的依赖,注意,是项目的坐标,不是项目中的依赖的坐标。

5.2、依赖冲突问题

当前项目和被依赖的项目中存在相同的依赖时,会存在冲突,比如版本不同。当出现冲突时,会根据优先级选择使用哪个依赖。

  • 路径优先:依赖层级越深,优先级越低。即直接依赖优先级高于间接依赖。
  • 声明优先:在maven中声明靠前的会覆盖靠后的。
  • 特殊优先:在同级配置中,相同资源的不同版本,声明靠后的会覆盖靠前的。

5.2、可选依赖

可选依赖相当于继承中的私有性被封装,隐藏当前依赖不被传递(继承)
在被隐藏的依赖中配置<optional>true</optional>即可:

	<denpendency>
		<groupId></groupId>
		<artifactId></artifactId>
		<version></version>
		<!-- 隐藏依赖 -->
		<optional>true</optional>
	</denpendency>

5.3、排除依赖

排除依赖也就是断开不想依赖的资源,被排除的依赖不需要指定版本
在依赖的项目的依赖中,排除不想引用的依赖即可:

<denpendency>
		<!-- 这里是依赖的项目的坐标 -->
		<groupId></groupId>
		<artifactId></artifactId>
		<version></version>
		<!-- 排除依赖 -->
		<exclusion>
			<groupId></groupId>
			<artifactId></artifactId>
		</exclusion>
	</denpendency>

5.4、依赖的作用范围

依赖的jar默认情况下可以在任何地方使用,但可以通过<scope>标签为其设置可作用的范围。

作用范围:

  • 主程序范围有效(main文件夹范围内)
  • 测试程序范围有效(test文件夹范围内)
  • 是否参与打包(package指令范围内)
scope主代码测试代码打包范例
compile(默认)YYYlog4j
testYjunit
providedYYservlet-api
runtimeYjdbc

5.5、依赖范围传递性

依赖的范围也有传递性(继承性),当前项目和引用的资源配置的作用范围不同时,存在以下关系:
在这里插入图片描述

6、项目构建的生命周期

maven构建生命周期描述的是一次构建过程经历了多少个事件。从前往后分别是:
在这里插入图片描述

6.1、3个生命周期

maven对项目构建的生命周期划分为3个:
- clean:清理工作
- default:核心工作(编译、测试、打包、部署)
- site:产生报告,发布站点

6.2、clean生命周期

clean生命周期分为3个阶段:

  • pre-clean:执行一些需要在clean之前完成的工作
  • clean:移除所有上一次构建生成的文件
  • post-clean:执行一些需要在clean之后立刻完成的工作

6.3、default生命周期

每执行一个命令,在该命令之前的命令都会执行,一直到该命令。比如执行test(测试)命令,在test之前的所有指令都会依次执行,一直到test为止,test之后的不会执行。其他声明周期也一样。

  • validate(校验):校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
  • initialize(初始化):初始化构建状态,比如设置属性值。
  • generate-sources(生成源代码):生成包含在编译阶段中的任何源代码。
  • process-sources(处理源代码):处理源代码,比如说,过滤任意值。
  • generate-resources(生成资源文件):生成将会包含在项目包中的资源文件。
  • process-resources (处理资源文件):复制和处理资源到目标目录,为打包阶段最好准备。
  • compile(编译):编译项目的源代码。
  • process-classes(处理类文件):处理编译生成的文件,比如说对Java class文件做字节码改善优化。
  • generate-test-sources(生成测试源代码):生成包含在编译阶段中的任何测试源代码。
  • process-test-sources(处理测试源代码):处理测试源代码,比如说,过滤任意值。
  • generate-test-resources(生成测试资源文件):为测试创建资源文件。
  • process-test-resources(处理测试资源文件):复制和处理测试资源到目标目录。
  • test-compile(编译测试源码):编译测试源代码到测试目标目录。
  • process-test-classes(处理测试类文件):处理测试源码编译生成的文件。
  • test(测试):使用合适的单元测试框架运行测试(Juint是其中之一)。
  • prepare-package(准备打包):在实际打包之前,执行任何的必要的操作为打包做准备。
  • package(打包):将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
  • pre-integration-test(集成测试前):在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
  • integration-test(集成测试):处理和部署项目到可以运行集成测试环境中。
  • post-integration-test(集成测试后):在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
  • verify (验证):运行任意的检查来验证项目包有效且达到质量标准。
  • install(安装):安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
  • deploy(部署):将最终的项目包复制到远程仓库中与其他开发者和项目共享。

6.4、site生命周期

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特定的服务器上

7、插件

  • 插件与生命周期内各阶段的指令绑定,在执行相应命令的时候其实就是运行的插件。
  • maven默认在各个生命周期上都绑定有预设的功能。
  • 我们也可以通过插件自定义功能。
<!-- 构建,配置插件 -->
	<build>
		<!-- 设置插件 -->
		<plugins>
			<!-- 具体插件配置 -->
			<plugin>
				<!-- 插件仓库坐标配置 -->
				<groupId></groupId>
				<artifactId></artifactId>
				<version></version>
				<!-- 生命周期配置 -->
				<executions>
					<!-- 具体生命周期配置 -->
					<execution>
						<!-- 打包方式 -->
						<goals>
						<!-- 具体打包方式 -->
							<goal>jar</goal>
						</goals>
						<!-- 执行的声明周期 -->
						<phase>test</phase>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

二、Maven高级

1、 分模块开发与设计

随着互联网的发展,应用的功能越来越多,项目也越来越大,我们需要将项目按功能模块进行拆分,分模块对项目进行开发。具体拆分方法就不介绍了。

但由于maven中存在资源依赖关系,项目拆分后出现聚合、继承等依赖问题。下面会分别介绍。

2、聚合

由于各模块之间存在资源依赖的关系,将项目按模块划分之后,当其中一个模块升级了依赖,其他模块没有升级,就会导致项目无法运行。
为了解决这个问题,我们单独建立一个模块来统一维护各个模块,当这个单独的模块执行任何指令,其他被维护的模块都会执行相应的指令,这种工作机制就叫做聚合

聚合:就是多模块构建维护。

作用:快速构建maven工程,一次性构建多个模块。
在这里插入图片描述
创建方式:

  • 创建一个空模块,打包类型为pom
  • 定义这个空模块维护的其他模块

在空模块的pom.xml文件中加上以下配置即可:

<!-- 声明该工程用于构建管理其他工程,值为pom -->
<packaging>pom</packaging>

<!-- 维护的工程列表 -->
<modules>
	<!-- 具体的工程模块 -->
	<module>这里是工程路径</module>
	<module>这里是工程路径</module>
	<module>这里是工程路径</module>
	<module>这里是工程路径</module>
</modules>

注意:参与聚合操作的模块最终执行的顺序与模块间的依赖关系有关,与配置无关。以依赖的链式顺序执行,即被依赖的模块会先执行。

3、继承

项目分模块后还会存在一个问题,那就是依赖的模块和被依赖的模块所引用的资源版本不一致。

我们也可以新建一个项目来统一维护,让所有模块都依赖这个项目的资源,其他模块要使用什么资源都直接配置到这个父模块即可。

作用:通过继承可以实现子工程使用父工程中的配置。
在这里插入图片描述
创建方式:

  • 在父工程中定义依赖,直接使用聚合中建立的工程即可。
<!-- 依赖管理模块 -->
<dependencyManagement>
	<!-- 依赖列表 -->
	<dependencies>
		<!-- 具体依赖 -->
		<denpendency>
			<groupId></groupId>
			<artifactId></artifactId>
			<version></version>
		</denpendency>
	</dependencies>
</dependencyManagement>
  • 在所有子工程中定义依赖的父类工程坐标与位置
<!-- 声明该工程的父工程,位于当前项目id前面 -->
<parent>
	<groupId></groupId>
	<artifactId></artifactId>
	<version></version>
	<relativePath>父工程pom.xml相对路径</relativePath>
</parent>
  • 子工程中所有依赖不需要指明版本,统一使用父工程中的版本,只需要声明使用的依赖即可。
<!-- 依赖列表 -->
	<dependencies>
		<!-- 具体依赖 -->
		<denpendency>
			<groupId></groupId>
			<artifactId></artifactId>
		</denpendency>
		<denpendency>
			<groupId></groupId>
			<artifactId></artifactId>
		</denpendency>
	</dependencies>

可继承的父类资源:
在这里插入图片描述

4、继承与聚合的区别

  • 作用:
    • 聚合:用于快速构建项目
    • 继承:用于快速配置项目
  • 相同点:
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom.xml文件中
    • 聚合与继承均属于设计型模块,并无实际的模块内容
  • 不同点:
    • 聚合:在当前项目中配置关系,聚合可以感知参与聚合的模块有哪些
    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

5、属性

这里的属性就和变量一样,定义一个属性,可以在其他地方调用,方便统一维护。

5.1、属性的分类

属性分类5大类:

  1. 自定义属性
  2. 内置属性
  3. Setting属性
  4. Java系统属性
  5. 环境变量属性

5.2、自定义属性

作用:等同于自定义变量,方便统一维护

定义:

  • 在标签内定义,
  • 格式:<技术.属性>
  • 比如定义一个version用于统一维护版本信息。
<properties>
	<!-- 定义一个spring的版本属性,用于统一维护spring版本 -->
	<spring.version>5.1.9.RELEASE</spring.version>
	<!-- 定义一个junit的版本属性,用于统一维护junit版本 -->
	<junit.version>4.1.2</junit.version>
</properties>

调用:

  • 在标签内通过${属性}调用
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<!-- 调用spring.version属性 -->>
	<version>${spring.version}</version>
</dependency>

5.3、内置属性

  • ${basedir}或 ${object.basedir}:读取基础路径
  • ${version} 或 ${object.version}:读取当前工程版本信息,就是那个内置的

5.4、Setting属性

  • ${settings.localRepository},读取maven安装目录中的xml文件

5.5、Java系统属性

  • ${user.home},读取Java系统属性
  • mvn help:system,在终端执行

6、版本管理

  • SNAPSHOT(快照版本):开发中的版本,或测试版本。
  • RELEASE(发布版本):已经开发完上线的版本。

6.1、工程版本号约定

约定规范:

  • 主版本.次版本.增量版本.里程碑版本
    • 主版本:项目重大架构的变更
    • 次版本:较大功能的增加和变化,或者全面修复系统漏洞
    • 增量版本:表示有重大漏洞修复
    • 里程碑版本:表名一个版本的里程碑(版本内部)。这一的版本同下一个正式版本相比,相对很不稳定,有待更多的测试。
  • 示例:2.1.3.RELEASE
  • 介绍一个应用语义化版本号规范http://t.csdn.cn/ZFTV1

7、多配置文件统一管理

在之前的配置中,只有子类的pom.xml文件能读取父工程pom.xml的自定义属性,而maven项目中除了pom.xml配置文件还有其他配置文件,比如xxx.properties文件,而该文件中是不能读取父工程的自定义属性的。

为了解决这个问题,我们可以在父工程的pom.xml文件中做以下配置,让其他配置文件也可以读取其自定义属性。

读取格式:${xxx.属性}

在父工程pom.xml文件中开启文件加载pom属性

<build>
	<!-- 配置主程序资源文件的信息 -->
	<resources>
		<!-- 具体资源配置 -->
		<resource>
			<!-- 设置配置文件对应的位置目录,支持使用属性动态绑定路径,若单独为某个工程设置,不用动态绑定即可 -->
			<directory>${project.basedir}/src/main/resources</directory>
			<!-- 开启对配置文件的资源加载过滤 -->
			<filtering>true</filtering>
		</resource>
	</resources>

	<!-- 由于maven项目中所有工程的目录结构是一样的,但是在test测试文件中不希望它也同时访问父类资源,因而需要为其单独配置 -->
	<testResources>
		<testResource>
			<!-- 设置配置文件对应的位置目录,支持使用属性动态绑定路径,若单独为某个工程设置,不用动态绑定即可 -->
			<directory>${project.basedir}/src/test/resources</directory>
			<!-- 开启对配置文件的资源加载过滤 -->
			<filtering>true</filtering>
		</testResource>
	</testResources>
</build>

8、多环境开发配置

在开发中,我们有多种开发环境比如测试环境、开发环境、线上环境,在不同的环境中,我们可能需要读取不同的配置,可以通过以下配置实现:

  • 在父工程pom.xml中定义以下配置:
<!-- 创建多环境 -->
<profiles>
	<!-- 定义具体的环境:生产环境 -->
	<profile>
		<!-- 环境id,定义环境对应的唯一名称 -->
		<id>如pro_env</id>
		<!-- 定义环境中专用的属性值 -->
		<properties>
			<!-- 具体属性,在这里配置了,其他地方就不用再配置,比如 -->
			<jdbc.url>jdbc:mysql://127.0.0.1:3306/test</jdbc.url>
		</properties>

		<!-- 设置默认启动,若当前环境为常用环境,可以将其设置为默认启动项,这样,在执行相干命令的时候就不用指定环境就id了 -->
		<activation>
			<activateByDefault>true</activateByDefault>
		</activation>
	</profile>

	<!-- 定义具体的环境:测试环境 -->
	<profile>
		<!-- 定义环境对应的唯一名称 -->
		<id>如dep_env</id>
		<!-- 定义环境中专用的属性值 -->
		<properties>
			<!-- 具体属性,在这里配置了,其他地方就不用再配置,比如 -->
			<jdbc.url>jdbc:mysql://127.1.1.2:3306/test</jdbc.url>
		</properties>
	</profile>
</profiles>
  • 加载指定环境,调用格式:
    • mvn 指令 - P 环境id
    • 比如:mvn install -P pro_env
    • 在idea中配置快捷执行,不用写mvn。

9、跳过测试的3种方式

9.1、方式1:IDEA中跳过

直接点这个按钮跳过测试:
在这里插入图片描述

9.2、方式2:在Maven指令中跳过

比如在执行install指令的时候跳过test:mav install -D skipTests

9.3、方式3:在配置文件中跳过

<pluginManagement>
	<plugins>
		<plugin>
			<artifactId>maven-surefire-plugin</artifactId>
			<version>maven版本</version>
			<configuration>
				<!-- 跳过测试 -->
				<skipTests>ture</skipTests>

				<!-- 上面是跳过全部测试,而欧美也可以跳过部分测试,或只执行部分test测试文件 -->
				<!-- 要执行的测试用例 -->
				<includes>
					<!-- 2种指定文件方式 -->
					<!-- **表示任意目录下 -->
					<include>**/测试文件名.java</include>
					<!-- User*Test表示所有以User开头,Test结尾的文件 -->
					<include>**/User*Test.java</include>
				</includes>
				
				<!-- 排除指定的测试用例 -->
				<excludes>
					<exclude>**/测试文件名.java</exclude>
					<exclude>**/User*Test.java</exclude>
				</excludes>
			</configuration>
		</plugin>
	</plugins>
</pluginManagement>

10、私服

在分模块合作开发种中,员工a开发完成了自己的模块,员工b需要使用员工a开发完成的模块,那么员工a就可以将开发完成的模块上传到私服,员工b可以从私服中获取员工a开发完成的模块。
在

10.1、Nexus私服

Nexus是Sonatype公司的一款maven私服。
下载地址:https://help.sonatype.com/repomanager3/product-information/download

  • 启动服务器(终端命令):nexus.exe/run nexus
  • 访问服务器:http://localhost:8081
  • 修改基础配置信息:
    • 安装目录下etc/nexus-default.properties文件中修改,比如端口号。
  • 修改服务器运行配置信息:
    • 安装目录下bin/nexus.vmoptions文件中保存有nexus服务器启动对应的配置信息,例如占用内存空间。

10.2、仓库分类

资源都是存储在私服的仓库中的,而仓库也分为很多类:

  • 宿主仓库hosted:保存非中央仓库的资源
    • 自主研发(我们的代码)
    • 第三方非开源项目(购买的资源)
  • 代理仓库proxy:代理远程仓库,通过nexus访问其他公共仓库,如中央仓库
  • 仓库组group:
    • 将若干个仓库分成一个组,按存放资源内容将仓库分为不同的组,查找资源时按组查找
    • 仓库组不能保存资源,属于设计型仓库
      .

10.3、本地仓库访问私服配置

从图中可以看出,本地仓库(maven)要访问私服需要:用户名、密码、下载地址、上传地址
在这里插入图片描述

10.3.1、用户名、密码、镜像地址 配置

配置登录私服的用户名和密码。

在maven安装目录找到setting.xml文件:

<servers>
	<server>
		<id>私服中的仓库名</id>
		<username>私服账号</username>
		<password>私服密码</password>
	</server>
	...
</servers>
...
<!-- 配置镜像,也就是本地仓库资源来源 -->
<mirror>
	<id>私服中的仓库名</id>
	<!-- *表示除了一配置的镜像,所有资源都从下面的url获取 -->
	<mirrorOf>*</mirrorOf>
	<!-- 私服中仓库的url,可以将要访问的仓库全部放到maven-public这个组中,直接访问这个组即可 -->
	<url>http://localhost:8081/repository/maven-public/</url>
</mirror>

注意: 这里配置的是maven文件,也就是本地仓库的文件,需要和安装的私服的setting.xml文件保持一致,因而需要将文件赋值粘贴一下。

10.3.2、本地上次私服地址配置

在父工程pom.xml文件中配置:

<!-- 发布配置 -->
<disttributionManagement>
	<!-- 发布版上传配置 -->
	<repository>
		<id>私服中的仓库名</id>
		<!-- 上传的发布版私服仓库地址 -->
		<url>http://localhost:8081/resipotry/仓库名</url>
	</repository>

	<!-- 开发版上传配置 -->
	<snapshotRepository>
		<id>私服中的仓库名</id>
		<!-- 上传的私服开发版仓库地址 -->
		<url>http://localhost:8081/resipotry/仓库名</url>
	</snapshotRepository>
</disttributionManagement>
10.3.3、执行流程
  • 先根据去找前面本地仓库配置的用户名和密码进行登录,因而两个id需要保持一致。
  • 再根据去私服找相应的仓库。
10.3.4、本地发布到私服

直接通过 mvn deploy命令就可以发布,执行命令后会去配置中找到相应url进行上传到私服。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CODER-V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值