28-Linux学习之旅之Maven与Nexus制品库 Linux学习之旅之Maven与Nexus制品库一、认识Maven1、Maven是什么Maven 是 Java 项目的构建工具负责将源代码编译、测试、打包成可运行的 JAR 或 WAR 包。2、Maven核心功能核心功能说明依赖管理统一管理 jar 包自动下载、引入第三方 jar解决 jar 包版本冲突统一管理版本号不用手动复制 jar 到项目项目构建一键完成编译、测试、打包、安装、部署一套命令完成整套流程3、构建流程mvn cleaninstall↓ clean删除target目录 ↓ validate 校验项目 ↓ compile 编译main源码 → target/classes ↓test编译并执行单元测试测试失败构建终止 ↓ package 打包jar/war → target ↓install拷贝构件到本地仓库二、pom.xml 核心配置pom.xml 是 Maven 项目的工程文件类似于 C 语言项目中 ./configure 的作用——定义了项目的元信息、依赖关系和构建方式。与 configure 不同的是pom.xml 中的依赖如果本地没有Maven 会自动从仓库下载而 configure只会检查并报错。?xmlversion1.0encodingUTF-8?!--根标签项目对象模型--projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema‑instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven‑4.0.0.xsd!--模型版本固定4.0.0--modelVersion4.0.0/modelVersion!--GAV坐标唯一标识项目--groupIdcom.demo/groupId!--公司/组织包名--artifactIddemo‑project/artifactId!--项目/模块名称--version1.0‑SNAPSHOT/version!--版本号--!--打包方式jar / war / pom默认jar--packagingjar/packaging!--项目名称可选--namedemo工程/name!--properties定义全局变量统一版本--propertiesjava.version1.8/java.versionspring.version5.3.20/spring.version/properties!--dependencies依赖导入第三方jar--dependenciesdependency!--依赖的GAV坐标--groupIdorg.springframework/groupIdartifactIdspring‑context/artifactIdversion${spring.version}/version!--引用properties变量--!--依赖范围scope控制生效周期--scopecompile/scope!--排除依赖解决jar包冲突排除传递依赖--exclusionsexclusiongroupIdxxx/groupIdartifactIdxxx/artifactId/exclusion/exclusions/dependency/dependencies!--dependencyManagement依赖版本管理父pom用--!--只声明版本不实际引入依赖子模块直接写gav不用写version--dependencyManagementdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring‑context/artifactIdversion5.3.20/version/dependency/dependencies/dependencyManagement!--build构建、插件配置--buildplugins!--插件配置--plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven‑compiler‑plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/source!--编译源码JDK版本--target1.8/target!--生成class字节码版本--/configuration/plugin/plugins/build!--repositories 远程仓库/私服--repositoriesrepositoryidnexus/idurlhttp://xxx/nexus/repository/public/url/repository/repositories!--父工程继承--parentgroupIdcom.demo/groupIdartifactIddemo‑parent/artifactIdversion1.0‑SNAPSHOT/versionrelativePath../pom.xml/relativePath/parent!--多模块聚合--modulesmoduledemo‑common/modulemoduledemo‑service/module/modules/project标签作用projectpom 根标签groupId组织、公司标识G 坐标artifactId项目 / 模块名称A 坐标version版本号V 坐标‑SNAPSHOT快照版本RELEASE 正式版本packaging打包类型jar/war/pompom 用于父工程聚合工程properties定义变量统一管理版本使用${变量名}引用dependencies实际引入依赖 jardependency单个依赖写 GAVscope依赖范围compile、test、provided、runtimeexclusions排除传递依赖解决版本冲突dependencyManagement版本锁定不真正引入 jar多用于父工程统一管理版本parent继承父 pom复用父工程配置、依赖modules聚合多模块一键构建多个子模块build构建配置编译、插件plugins插件配置编译插件、打包插件repositories配置远程仓库、私服地址三、必知的 Maven 命令clean清理 target 目录compile编译test单元测试package打包install安装本地仓库deploy部署私服。 mvn dependency:tree用于查看依赖树解决 jar 包冲突。 -DskipTests可以跳过单元测试。Maven 命令作用说明mvn clean清理删除target目录清除上次编译打包产物开发经常先 cleanmvn compile编译源码编译 main 下 java 代码生成 class 到target/classes不执行测试mvn test执行单元测试编译 运行 test 目录测试代码测试失败直接终止构建mvn package打包编译、测试生成 jar/war 包输出到 target 目录mvn install安装到本地仓库执行打包把 jar/war 复制到本机本地仓库本机其他项目可以引用mvn deploy部署上传私服把构件上传到企业私服仓库需要配置私服多用于项目发布mvn clean compile清理后编译先删 target再编译常用mvn clean package清理 打包日常打包最常用清理旧产物再打包mvn clean install清理 安装开发高频命令清理‑编译‑测试‑打包‑安装本地仓库mvn clean deploy清理 部署发布到私服mvn dependency:tree打印依赖树排查 jar 包版本冲突非常重要查看全部传递依赖mvn dependency:list列出所有依赖列出项目引入全部 jar 包mvn help:effective‑pom查看生效 pom把继承、父 pom 合并输出完整最终 pom 配置四、制品与制品库1、什么是制品和制品库Maven 里制品构件 Artifact项目构建输出产物jar、war、pom 文件都属于制品。 制品库专门存放、管理制品文件的仓库。五、Nexus基础认知1、什么是NexusNexusSonatype Nexus Repository是一款开源的仓库管理平台支持存储和管理多种制品类型JAR、Docker镜像、npm 包等。2、仓库认知仓库类型核心作用是否存储制品能否 deploy 上传典型实例宿主仓库 hosted存放企业自己开发的私有 jar 包分为 release 正式版、snapshot 快照版✅ 存储✅ 可以上传maven‑releases正式、maven‑snapshots快照代理仓库 proxy代理外网远程仓库本地没有 jar就去远程拉取并缓存到私服不允许上传私有包✅只缓存外网下载的包❌不可 deploy 上传maven‑central代理 Maven 中央仓库Sonatype仓库组 group逻辑聚合器本身不存任何 jar把多个 hosted、proxy 合并对外暴露一个统一访问地址。查找顺序按照成员列表从上往下查找❌不存储❌不能 deploy 上传maven‑publicNexus 默认仓库组中央仓库 CentralMaven 官方外网公共仓库全世界开源 jar 存放地互联网远程源不属于私服内部仓库外网服务器存储❌普通用户不能上传https://repo1.maven.org/maven2/Sonatype3、仓库之间的工作流程下载依赖Maven项目请求jar ↓ 【本地仓库】存在→有→直接使用结束 ↓无 访问 Nexus【maven‑public(group仓库组)】 ↓ 先查【hosted宿主仓库(releases/snapshots)】有就返回 ↓无 交给【proxy代理仓库】 ↓proxy缓存没有 访问外网【中央仓库】下载jar ↓ 缓存到proxy仓库 → 返回给Maven保存到【本地仓库】上传依赖mvn deploy ↓ 不能提交给group pom指定hosted宿主仓库地址 ↓ release → maven‑releases(hosted)snapshot → maven‑snapshots(hosted)↓ 制品存入Nexus宿主仓库 ↓ 其他开发者通过 maven‑public(group)即可下载该jar

相关新闻

最新新闻

使用CodeGraph分析优化Token消耗:从JWT验证到API成本控制

使用CodeGraph分析优化Token消耗:从JWT验证到API成本控制

在实际的软件开发、API 调用和大模型应用场景中,Token 消耗是一个直接影响成本、性能和用户体验的关键指标。无论是调用 OpenAI API 按 Token 计费,还是在自建服务中处理 JWT 令牌的验证开销,亦或是微服务间鉴权带来的网络延迟,未…

2026/8/25 5:14:07
多模态开发:2026年求职分水岭与核心技术解析

多模态开发:2026年求职分水岭与核心技术解析

1. 多模态开发为何成为2026年求职分水岭?三年前我接手第一个跨模态项目时,团队需要同时调用三个独立服务处理图像描述、语音转文字和文本分析。如今,当面试官问起"如何设计一个能理解视频弹幕情绪的系统"时,答案已经变成…

2026/8/25 5:14:07
MiniMaxH3本地部署指南:ComfyUI环境配置与低显存优化实战

MiniMaxH3本地部署指南:ComfyUI环境配置与低显存优化实战

最近在尝试将AI视频生成能力整合到本地工作流时,发现MiniMaxH3模型因其出色的图生视频效果备受关注。然而,从模型下载、环境配置到最终在ComfyUI中稳定运行,整个过程涉及多个环节,任何一个步骤出错都可能导致推理失败或显存爆炸。…

2026/8/25 5:14:07
董宇辉带走流量,东方甄选留下印钞机

董宇辉带走流量,东方甄选留下印钞机

不经历风雨,怎么见彩虹。过去几年对于东方甄选来说,可谓是一路充满了坎坷。先是超级网红主播董宇辉离开,随后又是顿顿、明明、天权、中灿、林林等系列核心主播出走。几乎所有人都开始不看好东方甄选,没想到一份财报却颠覆了所有人…

2026/8/25 5:14:07
3.左侧菜单动态路由的实现

3.左侧菜单动态路由的实现

一、在此之前,我先把具体的路由写好:1.为了后续分开两个不同账号的路由权限,所以两个账号的路由我是分开的,用于登陆接口返回:新增路由文件(resourceList.ts)区分admin和user账号://…

2026/8/25 5:14:07
Python functools.singledispatch 实战:用单分派消灭一堆 isinstance 判断

Python functools.singledispatch 实战:用单分派消灭一堆 isinstance 判断

Python functools.singledispatch 实战:用单分派消灭一堆 isinstance 判断 写 Python 时你大概率见过这种函数:开头一长串 if isinstance(x, int): ... elif isinstance(x, str): ... elif isinstance(x, list): ...。每加一种类型就往里塞一个分支,函数越来越臃肿,改一处怕碰坏…

2026/8/25 5:09:07