网站首页 > 教程文章 正文
Maven项目发布jar包到Nexus私服
在编码过程中,有些通用的代码模块,有时候我们不想通过复制粘贴来粗暴地复用。因为这样不仅体现不了变化,也不利于统一管理。这里我们使用maven deploy的方式,将通用的模块打成jar包,发布到Nexus私服,让其他的项目来引用,以更简洁高效的方式来实现复用和管理。
一、Maven的settings.xml文件中设置标签
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
此处设置的用户名和密码都是nexus的登陆配置
二、在项目的pom.xml文件中设置
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://192.168.1.123:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://192.168.1.123:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
在此,url都是Nexus相应仓库的链接地址,这一步做完之后,已经完成了发布所需要的基本配置。【试试命令:mvn deploy】
关注“IT人才圈”微信公众号,发送"01"获取更多相关源码教程或咨询。
注意:<server>中的<id>要和<repository>、<snapshotRepository>的<id>一致,maven在发布时,会根据此id来查找相应的用户名密码进行登录验证,并上传文件。
在Nexus后台可搜索到新上传的Jar包
三、发布的灵活性配置
maven会判断版本后面是否带了-SNAPSHOT,如果带了就发布到snapshots仓库,否则发布到release仓库。这里我们可以在pom.xml文件中,设置
<groupId>com.test</groupId>
<artifactId>my-test</artifactId>
<packaging>jar</packaging>
<version>${project.release.version}</version>
<properties>
<java.version>1.8</java.version>
<project.release.version>1.0-SNAPSHOT</project.release.version>
</properties>
<profiles>
<profile>
<id>product</id> <properties>
<project.release.version>1.0</project.release.version>
</properties>
</profile>
</profiles>
说明:通过占位符${project.release.version}来控制需要发布的版本,用命令mvn deploy -P product,发布my-test的1.0版本到releases库。如果使用命令mvn deploy,则默认使用 1.0-SNAPSHOT版本号,将发布my-test的1.0-SNAPSHOT版本到snapshots库。
四、发布时遇到的一些问题
- 部署到snapshot仓库时,jar包会带上时间戳,Maven会自动取相应版本最新的jar包;
- Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project my-test: Failed to deploy artifacts: Could not transfer artifact...from/to release...
部署到release仓库时,相同版本的jar包不能提交。
原因:因为release的部署策略是【disable redeploy】,不允许覆盖更新组件。
解决办法:修改一下版本号,再提交即可。
猜你喜欢
- 2025-06-10 如何搭建maven私有库——jar包管理(三)
- 2025-06-10 Nexus 私有制品库搭建(npm仓库私有化)
- 2025-06-10 Kubernetes 中搭建Maven私服(Nexus)提升团体开发效率
- 2025-06-10 nexus/简洁的maven私服搭建说明(maven配置nexus)
- 2025-06-10 聊聊项目打包发布到maven私仓常见的几种方式
- 2025-06-10 【技术】Maven 上传第三方jar包到私服
- 2025-06-10 maven引入本地jar包的5种方式(maven引入本地项目)
- 最近发表
-
- 第十三章:Python在Web开发中的应用
- python mysql 连接池(django mysql连接池)
- Python | SQL库:MySQL(python连接mysql数据库环境搭建)
- 使用Python来实现MySQL与PostgerSQL之间的数据实时同步?
- 申请免费域名SSL,为NAS和个人网站加密
- Cloudflare配置CDN+SSL+代理(cloudflare国内代理)
- Halo博客搭建(halo博客搭建失败怎么办)
- 我用三年踩坑才摸懂建站这事儿独立站新手别闭眼冲
- 30 分钟搞定 Docker 安装与 Nginx 部署,轻松搭建高效 Web 服务
- 免费通配符ssl证书的申请指南——从申请到启动https
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)