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

#3:Maven进阶与私服搭建

        Maven作为Java项目构建的核心工具,其配置与使用需重点关注依赖管理和仓库配置。中央仓库地址需在settings.xml中配置。依赖冲突可通过短路径优先、排除依赖、锁定版本、依赖调解、依赖优化和强制声明六种方式解决。资源文件需在pom.xml中配置resource目录确保编译时正确加载。企业级Nexus私服搭建可通过Docker容器快速部署,需配置hosted(私有仓库)、proxy(代理仓库)和group(仓库组)三类仓库。这些配置要点和实战技巧能有效提升Maven项目的依赖管理效率和构建稳定性。


1、配置

中央仓库依赖地址:Maven Repository: Search/Browse/Explore (mvnrepository.com)

菜鸟地址:Maven 常用命令 | 菜鸟教程 (runoob.com)

虚拟机参数(后续使用本地模版):

-DarchetypeCatalog=internal

2、作用域

Scope生效阶段是否传递
compile编译、测试、运行
provided编译、测试
runtime测试、运行
test测试
 system编译、测试

compile:业务核心库

provided:Web容器依赖,比如javax.servlet-api依赖

runtime:数据库驱动和日志实现

3、范围传递

compiletestprovidedruntime
compilecompile--runtime
testtest--test
providedprovided--provided
runtimeruntime--runtime

横轴:间接依赖; 纵轴:直接依赖

总结:编译传编译,运行传运行,测试提供阻断

4、依赖冲突

1.建议父POM统一版本管理

2.短路径优先

3.直接依赖声明优先

4.子模块统一管理

5.可选依赖

使用<optional>true</optional>标签不传递依赖

6.排除依赖(重点)

排除依赖后可能出现:ClassNotFoundException、NoClassDefFoundError、NoSuchMethodError

排除建议:

1.最小化排除范围

2.显示声明兼用性依赖

建议官网查看版本兼容文档,比如Mabatis的简介 – mybatis-spring-boot-autoconfigure --- Introduction – mybatis-spring-boot-autoconfigure

可以借助版本差异网站:Online API Diff Powered by Revapi

模拟依赖冲突:

<dependencies><!-- 引入 logback 作为实现 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.4.14</version></dependency><!-- 又间接引入 simple 实现 --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>5.0.1</version><exclusions><exclusion><groupId>*</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency><!-- 为了演示手动再加一次 simple --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>2.0.9</version></dependency></dependencies>

像这种情况一般就不要管了,排除依赖无法解决问题,要删除引入依赖才行

5、刷新依赖

有的时候明明依赖正确引入了,但是却依旧报错,那可能需要重新刷新一下!

先在Repository中搜索last,删除所有的无效依赖,再在IDEA里面更新

6、资源文件指定

有的时候properties或者xml文件不在资源目录(resources)下,在packsge时会出现无法携带到jar

解决办法:在pom文件里面添加指定文件目录

    <build><resources><resource><!--指定java目录下的所有路径下的所有文件--><directory>src/main/java</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource><resource><!--指定resources目录下的所有路径下的所有文件--><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource></resources></build>

7、Nexus私服搭建

1.搭建环境

通过docker-compose.yml拉取运行nexus容器

echo 3 > /proc/sys/vm/drop_caches        (可选)

sudo chown -R 200:200 /opt/nexus-data

sudo chcon -R -t container_file_t /opt/nexus-data        (可选)

version: '3.8'
services:nexus:user: "200:200"image: sonatype/nexus3:latestcontainer_name: nexusrestart: alwaysports:- "8081:8081"   # Web管理界面volumes:- /opt/nexus-data:/nexus-data:Z  # 持久化存储environment:- INSTALL4J_ADD_VM_PARAMS=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1gulimits:  # 解决文件句柄限制问题nofile:soft: 65536hard: 65536

经过长达180Second的等待,Nexus也是正常启动啦

2.仓库配置

查看登录密码:

docker exec -it nexus cat /nexus-data/admin.password

明白四个自带的仓库:

3.建立用户角色

替换代理仓库配置的中央仓库

4.修改本地的setting.xml文件

5.上传jar包

在项目的pom文件中添加配置:

    <distributionManagement><repository><id>cat</id><url>http://1.27.236.84:8081/repository/maven-releases/</url></repository><snapshotRepository><id>cat</id><url>http://1.27.236.84:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>

执行mvn clean deploy命令上传到私服仓库中

http://www.lryc.cn/news/611947.html

相关文章:

  • 面试问题11
  • 用html写一个类似于postman可以发送请求
  • PyCharm vs. VSCode 到底哪个更好用
  • 面试题:基础的sql命令
  • 使用Nginx部署前后端分离项目
  • AS32S601 芯片 ADC 模块交流耦合测试:技术要点与实践
  • 大前端游戏应用中 AI 角色行为智能控制
  • AdGuard 安卓修改版:全方位广告拦截与隐私保护专家
  • webrtc弱网-OveruseFrameDetector源码分析与算法原理
  • Template 显式实例化 隐式实例化
  • C++之vector类的代码及其逻辑详解 (下)
  • java学习 leetcode24交换链表节点 200岛屿数量 +一些开发任务
  • win10/11网络防火墙阻止网络连接?【图文详解】防火墙阻止连接网络的解决方法
  • 最新教程 | CentOS 7 下 MySQL 8 离线部署完整手册(含自动部署脚本)
  • 【MyBatis新手避坑】详解 `Could not find resource ...Mapper.xml` 错误
  • 从博客到播客:文本转音频的全流程技术点
  • C++ - 仿 RabbitMQ 实现消息队列--网络通信协议设计
  • DOM的XML命名空间革命:从混乱到有序的蜕变
  • IP与MAC地址的区别解析
  • OpenAI重磅推出开源模型!gpt-oss-120b与20b全面解析
  • OpenAI/gpt-oss开源模型部署与使用全指南
  • OpenAI 开源GPT OSS系列模型
  • 小实验--震动点灯
  • GPT-OSS 与 Ollama 完整安装使用教程
  • 【JavaEE】(8) 网络原理 HTTP/HTTPS
  • NWinfo(硬件信息检测工具)v1.4.20绿色免费版,U盘随走随检,结果即刻导出
  • DM数据库的安全版本SYSDBA无法修改其他用户密码?
  • 基于串口实现可扩展的硬件函数 RPC 框架(附完整 Verilog 源码)
  • HarmonyOS应用开发环境搭建以及快速入门介绍
  • 【大模型系列】gpt-oss系列模型初探