当前位置: 首页 > news >正文

Maven(项目管理工具)

1. Maven 的概念

1.1. 什么是 Maven

翻译风格提示: “专家 / 内行”
Maven 是一个跨平台的项目管理与构建自动化工具,主要用于基于 Java 平台的项目。它覆盖**构建(compile/package)、依赖管理(dependency management)以及项目信息管理(POM: Project Object Model)**等。Maven 通过约定(convention)和生命周期(lifecycle)把构建过程标准化,并提供与远程/本地仓库的集成以自动解析依赖。

什么是理想的项目构建?

  • 高度自动化:减少手工步骤,一条命令完成多步任务。

  • 跨平台:在不同操作系统/环境结果一致。

  • 可重用的组件:模块化构建、共享 jar。

  • 标准化:统一目录结构和构建过程,便于团队协作。

什么是依赖?为什么要进行依赖管理?

  • 依赖(dependency):项目在编译/运行/测试时需要的外部库或其他模块(例如:第三方 jar、本团队的其他模块 jar)。

  • 为什么管理依赖:自动下载所需库、统一版本控制、解决传递依赖冲突、便于模块互引用与复用。

    • 示例:A 依赖于 B,B 依赖于 C。Maven 会通过传递依赖机制保证 A 构建时同时获取到 B 和 C。

    • 好处:减少手动下载、保证构建环境一致。

有哪些项目信息?
POM(pom.xml)中常见信息:项目坐标(groupId / artifactId / version)、项目名称与描述、开发者信息、许可证、依赖声明、构建插件与配置、仓库配置、模块列表等。


1.2. 什么是依赖管理

依赖管理即对项目所需的第三方包或内部模块进行声明与管理:

  • 第三方依赖:通过配置 groupId/artifactId/version 自动从远程仓库下载 jar 到本地仓库使用。

  • 本项目模块依赖:同样使用依赖声明(如果模块已安装到本地仓库或发布到私服),可以像引用第三方包一样引用自己的模块 jar,支持模块化开发。


1.3. 什么是项目构建

项目构建:把源代码转换为可执行/可部署产物(编译 → 测试 → 报告 → 打包 → 部署)的整个流程。

两种构建方式对比:

  • 传统方式(手工/IDE):在 IDEA/Eclipse 中手动编写、编译、运行、用 JUnit 运行测试、手动打 war,部署到 Tomcat。步骤分散、依赖个人 IDE 配置。

  • Maven 方式:把构建过程标准化、阶段化(lifecycle),通过命令一键执行各阶段。常见阶段示例:cleancompiletestpackageinstalldeploy

    • 例如:mvn clean package 会依次执行清理、编译、测试、打包。

    • 好处:自动化、可复现、适合团队协作、降低环境差异导致的问题。


1.4. Maven 的应用场景

  • 团队开发中统一构建流程(CI/CD 前提)。

  • 多模块项目的依赖管理与模块打包。

  • 在测试/持续集成服务器上拉取源码并通过 Maven 自动完成构建、测试与部署。

  • Java Web、Java Library、插件开发等场景均适用(通过不同 packaging 与插件配置)。


1.5. 为什么使用 Maven(与 IDE / Ant 对比)

与纯 IDE(Eclipse/IDEA)相比:

  • IDE 操作多且不一致;Maven 提供统一命令驱动的构建流程,降低“本地能跑、他处不能跑”的问题。

与 Ant 相比:

  • Ant 是任务驱动,需要详细定义每一步,且没有约定的目录结构和生命周期;依赖管理需额外集成。

  • Maven 有约定(约定优于配置)、内置生命周期、和集成的依赖/仓库管理,简化配置。

Maven 的关键优势:

  • 约定目录结构(知道源码在哪里,输出在哪里)。

  • 生命周期(如执行 mvn install 自动执行 compile/test/package/install)。

  • 统一配置(pom.xml) — 项目行为集中化描述。

  • 依赖管理 + 仓库(中央仓库与私服),支持传递依赖与版本管理。


2. Maven 安装与入门

2.1. Maven 安装目录与环境配置

2.1.2. Maven 安装目录分析(常见目录)
  • bin/:包含 mvn(或 mvn.cmd)启动脚本。

  • boot/:包含类加载器框架(如 plexus-classworlds)。

  • conf/:全局配置(如 settings.xml)的位置。

  • lib/:Maven 运行所需的 jar 库。

  • 其他:LICENSE.txtNOTICE.txtREADME.txt 等说明文件。

2.1.3. Maven 的环境变量(Windows 示例)
  1. 设置 MAVEN_HOME:指向 Maven 解压目录(例如 D:\TOOLS\maven\apache-maven-3.5.4)。

  2. 设置 Path:将 %MAVEN_HOME%\bin 加到系统 Path,以便在命令行直接运行 mvn

  3. 设置 MAVEN_OPTS(可选):JVM 启动参数,例如 -Xms128m -Xmx512m(解决构建内存问题)。

  4. settings.xml(配置文件)

    • 全局:%MAVEN_HOME%/conf/settings.xml(影响所有使用该 Maven 的用户)。

    • 用户级:~/.m2/settings.xml(仅影响当前用户)。

    • 可在 settings.xml 中配置本地仓库路径、镜像(mirror)、代理、服务器认证等。

验证安装(Windows 示例):在命令行执行 mvn -version,应输出 Maven 版本、Java 版本、默认 locale 等信息(示例输出中有拼写/路径问题请以系统实际输出为准)。


2.2. Maven 的第一个项目(示例流程)

2.2.1. 约定的目录结构(Maven 标准)
project-root/
├─ src/
│  ├─ main/
│  │  ├─ java/           # .java 源码
│  │  └─ resources/      # 资源文件(spring/mybatis 配置等)
│  └─ test/
│     ├─ java/           # 测试源码(JUnit)
│     └─ resources/      # 测试资源
├─ target/               # Maven 构建输出目录(自动生成)
└─ pom.xml               # 项目描述与配置
2.2.2. 示例 pom.xml(基础)
<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>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><name>Hello</name><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency></dependencies>
</project>

说明:SNAPSHOT 表示持续开发版本,非正式发布版。

2.2.3. 示例代码:Hello.java
package cn.tx.maven;public class Hello {public String sayHello(String name){return "Hello " + name + "!";}
}
2.2.4. 示例测试:HelloTest.java
package cn.tx.maven;import org.junit.Test;
import static junit.framework.Assert.assertEquals;public class HelloTest {@Testpublic void testHello(){Hello hello = new Hello();String results = hello.sayHello("maven");assertEquals("Hello maven!", results);}
}
2.2.5. 常见 Maven 命令与效果
  • mvn compile:编译源码,生成 target/classes

  • mvn clean:清理(删除 target)。

  • mvn test:运行测试(src/test/java)。

  • mvn package:打包(例如生成 jar/war 到 target)。

  • mvn install:把包安装到本地仓库(~/.m2/repository),供其他本地项目依赖。

  • mvn clean package:组合命令,先清理再打包。
    这些命令展示了 Maven 生命周期与插件协作。


2.3. Maven 的第二个项目(模块依赖示例)

2.3.1. 目录结构(HelloFriend)
HelloFriend/
├─ src/main/java/...
├─ src/test/java/...
└─ pom.xml
2.3.2. HelloFriend 的 pom.xml(依赖另一个模块 Hello)
<project ...><modelVersion>4.0.0</modelVersion><groupId>cn.tx.maven</groupId><artifactId>HelloFriend</artifactId><version>0.0.1-SNAPSHOT</version><name>HelloFriend</name><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><!-- 依赖本地模块 Hello --><dependency><groupId>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope></dependency></dependencies>
</project>

注意:若 Hello 模块未安装到本地仓库,会报错 Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT。解决方法:先在 Hello 项目根目录执行 mvn clean install,把 Hello 安装到本地仓库,再构建 HelloFriend。

2.3.3. HelloFriend.java(调用 Hello)
package cn.tx.maven;public class HelloFriend {public String sayHelloToFriend(String name){Hello hello = new Hello();String str = hello.sayHello(name) + " I am " + this.getMyName();System.out.println(str);return str;}public String getMyName(){return "John";}
}
2.3.4. HelloFriendTest.java
package cn.tx.maven;import static junit.framework.Assert.assertEquals;
import org.junit.Test;public class HelloFriendTest {@Testpublic void testHelloFriend(){HelloFriend helloFriend = new HelloFriend();String results = helloFriend.sayHelloToFriend("zhanggan");assertEquals("Hello zhanggan! I am John", results);}
}
2.3.5. 构建流程要点
  1. 若 Hello 未安装到本地仓库 → mvn package 会失败(找不到依赖)。

  2. 先进入 Hello 项目执行 mvn clean install,将 Hello 安装到本地仓库(~/.m2/repository/cn/tx/maven/Hello/0.0.1-SNAPSHOT)。

  3. 然后在 HelloFriend 项目执行 mvn package → 构建成功。


2.4. Maven 仓库配置

2.4.1. Maven 仓库概念
  • 仓库(Repository):存储构建产物(jar/war/pom 等)的地方。Maven 通过仓库解析依赖。

  • 仓库布局:按坐标存放:groupId/artifactId/version/artifactId-version.packaging(例如 cn/tx/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar)。

  • 仓库分类

    • 本地仓库:位于 ~/.m2/repository(可以配置到其他路径)。每个用户通常有一个本地仓库。

    • 远程仓库:在线仓库(如 Maven Central https://repo.maven.apache.org/maven2)。

    • 私服(私有远程仓库):公司内部搭建的仓库(例如 Nexus、Artifactory),用于内部组件共享与第三方镜像缓存。

2.4.2. 配置本地仓库(settings.xml)
  • 全局配置%MAVEN_HOME%/conf/settings.xml(影响使用该 Maven 的所有用户)。

  • 用户配置~/.m2/settings.xml(仅影响当前用户)。

  • <localRepository>/path/to/local/repo</localRepository> 中指定自定义本地仓库路径。

  • 使用本地仓库(课程或公司提供的离线仓库)可以避免因网络问题造成依赖下载失败。


2.5. IDEA 整合 Maven 项目

2.5.1. IDEA 的 Maven 全局配置
  • 在 IDEA 设置(Settings / Preferences)中配置 Maven:指定 Maven home directory(使用自带或自定义 Maven)、User settings file(指向 ~/.m2/settings.xml)、本地仓库位置与 VM options(MAVEN_OPTS)。

  • 这些设置会影响在该 IDEA 上打开/创建的 Maven 项目的默认构建行为。

2.5.2. IDEA 创建 Maven Java 项目
  • 通过 IDEA 的 New Project → Maven,选择 archetype(或不使用 archetype),IDEA 会自动生成标准目录结构与基础 pom.xml

  • 若网络或本地仓库配置问题导致 archetype 下载慢或卡住,可设置 ArchetypeCatalog=local 强制从本地加载。

2.5.3. IDEA 创建 Maven Web 项目(注意点)
  • Web 项目会初始化 web 相关目录结构(例如 src/main/webapp/WEB-INF/web.xml 等)。

  • 若创建很慢或卡在 “Generating project in Batch mode”,检查本地仓库或 archetype 源是否可用(建议使用企业/课程提供的本地仓库)。

  • 配置 Tomcat(Run/Debug Configurations)并设置部署 artifact(war)以便在 IDEA 中调试运行 Web 项目。


2.6. Maven 项目视图(IDEA 中)

  • Maven 项目视图 用来查看项目模块与生命周期(plugins、dependencies、profiles 等)。

  • 可以在该视图中直接执行常用 Maven 命令(clean、package、install、test、site 等),并观察构建输出与插件执行详情。

  • 适合快速定位依赖、执行特定阶段或运行插件目标。

非常好👍,你这一部分内容已经是 Maven 进阶知识体系的完整框架了。为了帮助你整理成学习笔记或 markmap 思维导图,我可以把这一整节(3. Maven 进阶)系统化地重新排版成一份结构清晰、格式规范、带层次的 Markdown 学习笔记版


3.Maven 进阶

3.1 POM 文件(pom.xml)

POM(Project Object Model,项目对象模型)是 Maven 项目的核心文件。
它定义了项目的基本信息,用于描述项目如何构建、声明项目依赖等。

就像:

  • Make 的 MakeFile

  • Ant 的 build.xml

Maven 使用 pom.xml 来管理整个项目生命周期。


3.2 坐标(Coordinates)

3.2.1 概念

在 Maven 中,坐标(Coordinate) 是每个构件(Artifact)的唯一标识。
一个坐标通常由以下 5 个元素组成:

元素说明是否必须
groupId组织标识(一般为公司网址的反写+项目名)
artifactId项目名称(通常为项目名-模块名)
version版本号(如 1.0.0)
packaging打包方式(默认为 jar)⚙️
classifier附属构件(用于区分不同输出)⚙️

3.2.2 坐标的意义

  • 为所有构件提供 唯一标识

  • 统一规范,方便自动查找与下载依赖

  • 支持机器自动解析与依赖管理


3.2.3 坐标详解

版本号命名规范:

示例含义
1.0.0-SNAPSHOT快照版(开发中)
1.0.0-ALPHA内测版
1.0.0-BETA公测版
1.0.0-RELEASE稳定版
1.0.0-GA正式发布版

3.2.4 示例:自定义项目坐标

<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>cn.tx.maven</groupId><artifactId>HelloFriends</artifactId><version>0.1.5-SNAPSHOT</version><packaging>jar</packaging>
</project>

3.3 依赖(Dependencies)

3.3.1 依赖的意义

项目开发时需要使用各种外部库(例如 JUnit、MyBatis 等)。
Maven 能自动管理这些依赖:

  • 自动下载依赖及其传递依赖

  • 管理版本,避免冲突

  • 存储到本地仓库,重复使用


3.3.2 依赖的使用示例

<dependencies><!-- 测试依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><!-- 自定义项目依赖 --><dependency><groupId>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
</dependencies>

属性说明:

属性含义
三维坐标唯一定位依赖包
scope控制依赖包在哪些阶段加入 classpath

3.3.3 查找依赖

访问 Maven 官方中央仓库查找坐标:
🔗 https://mvnrepository.com/

示例:搜索 MyBatis


3.4 依赖范围(Scope)

Scope主代码有效测试代码有效运行时有效示例
compilelog4j
testjunit
providedservlet-api
runtimeJDBC Driver
system✅(需本地路径)手动引入Jar
import(用于依赖管理)---

3.5 依赖传递与阻断

3.5.1 依赖传递

示例:

Hello → HelloFriend → MakeFriend

MakeFriend 项目间接继承 Hello 的依赖。


3.5.2 依赖范围对传递的影响

第一传递依赖compiletestprovidedruntime
compilecompile--runtime
testtest--test
providedprovided-providedprovided
runtimeruntime--runtime

3.5.3 阻断传递

使用 <optional>true</optional> 阻断依赖:

<dependency><groupId>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><optional>true</optional>
</dependency>

3.5.4 可选依赖(排除依赖)

使用 <exclusion> 显式排除某个依赖:

<exclusions><exclusion><groupId>cn.tx.maven</groupId><artifactId>Hello</artifactId></exclusion>
</exclusions>

3.6 仓库(Repository)

3.6.1 仓库概念

Maven 仓库是用来存放所有依赖构件(JAR/WAR/POM)的地方。

分类:

  • 本地仓库(local)

  • 中央仓库(central)

  • 远程仓库(remote)


3.6.2 本地仓库

路径:

Windows: C:\Users\<用户名>\.m2\repository
Linux: /home/<用户>/.m2/repository

可通过 settings.xml 修改位置:

<localRepository>D:\maven_repo</localRepository>

3.6.3 中央仓库

  • 由 Maven 官方维护

  • 包含几乎所有常用开源库

  • 访问地址:https://repo.maven.apache.org/maven2


3.6.4 搜索顺序

Maven 在下载依赖时的顺序:

  1. 本地仓库

  2. 私服(远程仓库)

  3. 中央仓库


3.7 生命周期(Lifecycle)

3.7.1 概念

Maven 生命周期定义了项目构建的 完整流程阶段

包含三大生命周期:

  1. clean(清理)

  2. default(构建)

  3. site(生成站点)


3.7.2 生命周期阶段表

生命周期阶段(Phase)说明
cleanpre-clean → clean → post-clean清理项目
defaultvalidate → compile → test → package → install → deploy构建项目
sitepre-site → site → post-site → site-deploy生成站点文档

示例命令:

mvn clean package

👉 将依次执行 clean → validate → compile → test → package


3.7.3 内置插件绑定表

生命周期阶段插件目标
cleancleanmaven-clean-plugin:clean
defaultcompilemaven-compiler-plugin:compile
defaulttestmaven-surefire-plugin:test
defaultpackagemaven-jar-plugin:jar / maven-war-plugin:war
defaultinstallmaven-install-plugin:install
defaultdeploymaven-deploy-plugin:deploy
sitesitemaven-site-plugin:site

3.8 插件(Plugins)

插件用于执行实际任务,如编译、测试、打包、部署等。
常用插件:

  • maven-compiler-plugin

  • maven-surefire-plugin

  • maven-jar-plugin

  • maven-deploy-plugin


3.9 Maven 的继承与聚合

3.9.1 继承的意义

  • 避免重复配置

  • 统一版本与仓库管理

  • 提升项目安全性与一致性


3.9.2 可继承元素

包括:

  • groupId、version、description、organization、url

  • dependencies、dependencyManagement

  • repositories、build、reporting 等


3.9.3 IDEA 中的继承实现

父项目创建后,子模块可继承父级 POM 的:

  • 依赖

  • 仓库配置

  • 插件管理


3.9.4 依赖管理方式

方式子模块继承行为示例
<dependencies>自动继承依赖直接引用 mybatis
<dependencyManagement>不继承依赖,但继承版本子模块引用时不写 version

3.9.5 聚合管理

聚合用于统一构建多个模块。

父项目 pom.xml 示例:

<modules><module>core</module><module>manage</module><module>portal</module>
</modules>

执行命令:

mvn install

👉 会自动构建所有模块。


3.9.6 Properties 属性

使用 properties 统一管理版本号或通用信息:

<properties><spring.version>5.3.9</spring.version>
</properties><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version>
</dependency>

当然可以。以下是你提供内容的系统化总结版,已按“学习笔记+文档风格”重新整理,层次清晰、逻辑完整,格式为 Markdown,可直接导入 Markdown 编辑器或 markmap 思维导图工具中使用。


4、Maven 私服架构详解

4.1 Maven 私服介绍

4.1.1 私服概述

在企业级开发中,不同的项目组会负责不同模块的工程。
例如:

  • maven-dao 工程开发完成后,发布到私服;

  • maven-service 工程则从私服中下载 dao 模块依赖。

私服的作用

公司在局域网内部搭建的远程 Maven 仓库服务器称为 私服(Private Repository)
主要功能如下:

  1. 构建共享中心
    员工将自己开发的项目打成 jar 包并上传到私服,其他项目组可直接引用使用。

  2. 统一依赖管理
    各工程从私服中下载依赖,避免版本混乱。

  3. 中央仓库代理
    当私服中没有某个 jar 包时,它会自动从 Maven 中央仓库 下载并缓存,供后续使用。


4.1.2 Nexus 介绍

Nexus 是目前最常用的 Maven 仓库管理工具。
它提供以下功能:

  • 支持多种仓库类型(宿主、代理、仓库组等)

  • 提供 web 图形化管理界面

  • 支持权限控制与账户管理

  • 提供构件(artifact)搜索与上传功能


4.2 Maven 私服实战

4.2.1 Nexus 安装与启动

① 解压与配置

nexus-2.12.0-01-bundle.zip 解压到无中文路径目录中。

修改配置文件:conf/nexus.properties

# Jetty section
# 端口号
application-port=8081
application-port=8079# 允许访问的主机监听
application-host=0.0.0.0# nexus 工程目录
nexus-webapp=${bundleBasedir}/nexus# 访问路径
nexus-webapp-context-path=/nexus# 工作目录
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF
② 安装命令

进入 nexus/bin 目录(管理员身份运行 CMD):

nexus.bat install      # 安装 Nexus 服务
nexus.bat start        # 启动 Nexus
nexus.bat stop         # 停止服务
nexus.bat uninstall    # 卸载 Nexus
③ 访问 Nexus

浏览器访问:

http://localhost:8079/nexus

登录默认账号:

  • 用户名:admin

  • 密码:admin123


4.2.2 Nexus 仓库类型

仓库类型名称功能说明
hosted(宿主仓库)公司自建仓库,用于存放发布的 jar 包。分为:- releases(稳定版本)- snapshots(测试版本)
proxy(代理仓库)代理外部公共仓库,如 Maven 中央仓库,当私服中无依赖时自动下载并缓存。
group(仓库组)将多个仓库(hosted/proxy)组合成一个访问入口。通常项目连接此类型。
virtual(虚拟仓库)用于兼容 Maven 1.x 构件或插件。

4.2.3 将项目发布到私服

① 在客户端配置私服账户

在本地 settings.xml 文件中配置上传认证信息:

<servers><!-- 稳定版本 --><server><id>releases</id><username>admin</username><password>admin123</password></server><!-- 测试版本 --><server><id>snapshots</id><username>admin</username><password>admin123</password></server>
</servers>
② 配置项目的私服地址

在项目 pom.xml 中添加:

<distributionManagement><repository><id>releases</id><url>http://localhost:8079/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><url>http://localhost:8079/nexus/content/repositories/snapshots/</url></snapshotRepository>
</distributionManagement>

⚠️ 注意:id 值需与 settings.xml 中一致。

③ 执行发布命令

在项目目录执行:

mvn deploy

将项目发布到对应的私服仓库(根据版本号判断上传位置)。


4.2.4 从私服下载 jar 包

① 在 settings.xml 中配置镜像
<mirror><id>nexus</id><mirrorOf>*</mirrorOf><name>nexus maven</name><url>http://localhost:8079/nexus/content/groups/public</url>
</mirror>
② 测试步骤
  1. 将一个项目发布到私服;

  2. 删除本地仓库中的对应 jar;

  3. 在另一个项目中引入该依赖,查看是否从私服下载:

<dependency><groupId>cn.tx.maven</groupId><artifactId>txmaven_demo1013</artifactId><version>1.0-RELEASES</version>
</dependency>
③ 可选方式:在 pom.xml 中直接配置仓库
<repositories><repository><id>nexus</id><name>nexus maven</name><url>http://localhost:8079/nexus/content/groups/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories>

但这种方式需在每个项目重复配置,不推荐。

④ 推荐统一配置方式

settings.xml 中添加 profile:

<profiles><profile><id>dev</id><repositories><repository><id>nexus</id><url>http://localhost:8079/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>Public Repositories</name><url>http://localhost:8079/nexus/content/groups/public</url></pluginRepository></pluginRepositories></profile>
</profiles><activeProfiles><activeProfile>dev</activeProfile>
</activeProfiles>

这样所有项目都会自动从私服下载依赖与插件。


4.2.5 第三方 Jar 包发布到私服

有些第三方 jar(如 fastjson)无法直接从中央仓库下载,可手动上传。

① 安装到本地仓库
mvn install:install-file -DgroupId=com.alibaba \
-DartifactId=fastjson \
-Dversion=1.1.37 \
-Dfile=fastjson-1.1.37.jar \
-Dpackaging=jar
② 上传到私服

settings.xml 中添加账户:

<server><id>thirdparty</id><username>admin</username><password>admin123</password>
</server>

执行命令:

mvn deploy:deploy-file \
-DgroupId=com.alibaba \
-DartifactId=fastjson \
-Dversion=1.1.37 \
-Dpackaging=jar \
-Dfile=fastjson-1.1.37.jar \
-Durl=http://localhost:8079/nexus/content/repositories/thirdparty/ \
-DrepositoryId=thirdparty

上传完成后,即可在私服中搜索并使用该 jar 包。


✅ 总结

操作配置文件关键命令 / 标签功能
安装 Nexusnexus.propertiesnexus.bat start/stop启动私服服务
上传 jarsettings.xml + pom.xmlmvn deploy将项目发布到私服
下载 jarsettings.xml<mirror><profile>从私服获取依赖
上传第三方 jarCLImvn deploy:deploy-file上传外部 jar 包
仓库类型Nexus GUIhosted / proxy / group管理仓库分类与代理

http://www.dtcms.com/a/536786.html

相关文章:

  • 湛江市建设规划局网站dede静态网站
  • 在SCNet超算DCU异构AI手工安装Ollama 0.6.7版本
  • CSP-S模拟赛八总结
  • 电子商务网站设计流程vuejs做视频网站
  • 新手做网站需要哪些软件thinkphp旅游网站源码
  • 漳州市城乡建设局网站6wordpress自定义排版
  • Falco:云原生世界中的安全守护者
  • 塘沽做网站的公司电子商城市场
  • 一篇文章详解Kafka Broker
  • Vue3 创建项目
  • 怎样注册自己网站公司企业网站制作需要多少钱
  • 京东网站建设吗做宣传的网站
  • 单细胞空间--纤维相关蛋白阳性成纤维细胞调控伴瘤栓肾细胞癌的肿瘤微环境重构
  • Visual Studio 2022打包生成exe安装程序
  • 做造价在哪个网站查价格建筑公司年度工作总结报告
  • 现代化专业群建设专题网站搬瓦工wordpress建站
  • PostgreSQL PostGIS中的元数据表
  • ProcDump 学习笔记(6.11):以非交互方式运行 ProcDump(服务器/生产环境指南)
  • yolov4和yolov5(yolov4的工业化)
  • 手写线程池第1弹:深入理解线程池:从原理到实战,手写高性能线程池的完整指南
  • 网站没有域名电子商务网站硬件建设的核心
  • 上海 松江 网站制作南通做网站
  • 如何在 Spring Boot 项目中使用 @Slf4j 注解结合 Logback 进行系统日志管理
  • SQLite 事务
  • 第 1 章 JVM 和 Java 体系架构_java 字节码
  • MarketUP营销自动化核心方法:从数据驱动到全链路增
  • 沙田镇仿做网站网站价格
  • 信创背景下,中职计算机网络专业人才培养方案探讨
  • 且网站制作开源系统有哪些
  • AR智能巡检:电力运维的“透视眼”与“超级大脑”