Spring Boot 多模块与 Maven 私有仓库
2019独角兽企业重金招聘Python工程师标准>>>
前言
系统复杂了,抽离单一职责的模块几乎是必须的;若需维护多个项目,抽离公用包上传私有仓库管理也几乎是必须的。其优点无需赘述,以下将记录操作过程。
1. 多模块拆分
在.NET 中由于其统一性,实现上更自然一点。Spring Boot 通过 Maven 构建多模块工程也不麻烦,假如我的项目中包含以下几个包:
我需要将他们分别拆分成独立模块,首先要修改的是根目录下的 pom.xml,packaging 类型改为 pom,并添加 modules 节点:
<?xml version="1.0" encoding="UTF-8"?>
<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>com.youclk.multi-package</groupId><artifactId>parent</artifactId><version>0.0.1-SNAPSHOT</version><modules><module>api</module><module>service</module><module>dao</module></modules><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><lombok>1.16.20</lombok></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok}</version></dependency></dependencies></project>
之后新建一个个 Module,将对应的代码移植过去:
需要注意的是在启动模块的 pom.xml 中需要指定启动类:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.youclk.multipackage.api.MultiApplication</mainClass><layout>ZIP</layout></configuration></plugin></plugins>
</build>
统一升级版本命令:mvn versions:set -DnewVersion=0.0.1-SNAPSHOT
,到此差不多完成了,引用方式与普通的依赖包一致:
<dependency><groupId>com.youclk.multi-package</groupId><artifactId>service</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>
2. Nexus3 私有仓库搭建
Docker 时代一切都变得异常简单,Compose 配置如下:
version: '3.5'services:nexus:image: sonatype/nexus3:3.10.0networks:- proxy- youclkvolumes:- /mnt/nas/db/nexus-data:/nexus-datadeploy:mode: replicatedlabels:- com.df.notify=true- com.df.port=8081- com.df.serviceDomain=nexus.youclk.comrestart_policy:condition: anymax_attempts: 3update_config:delay: 5sorder: start-firstresources:limits:cpus: '0.50'memory: 1gnetworks:proxy:external: trueyouclk:external: true
启动过程需要一分钟左右:
需要注意的是如果你的 ssl 是在负载均衡或者其他的反向代理之上,那么必须在 HTTP 头中指定 X-Forwarded-Proto 传输协议为 HTTPS,然后,就可以愉快地玩耍了。
3. 上传与引用
3.1 上传
首先需要在 Nexus 创建私有仓库,例如我的:
其次在本地 maven 设置中添加 server 节点,默认在 ~/.m2/settings.xml
:
<servers><server> <id>youclk</id> <username>admin</username><password>youclk</password> </server>
</servers>
pom.xml 中添加上传地址:
<distributionManagement><repository><id>nexus</id><name>Releases Repository</name><url>https://nexus.youclk.com/repository/youclk-releases/</url></repository><snapshotRepository><id>nexus</id><name>Snapshot Repository</name><url>https://nexus.youclk.com/repository/youclk-snapshots/</url></snapshotRepository>
</distributionManagement>
最后执行 mvn clean deploy
便会上传至私有仓库,单独传包命令如下:
mvn deploy:deploy-file -DgroupId=com.youclk -DartifactId=utils -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=target/utils-0.0.1-SNAPSHOT.jar -Durl=https://nexus.youclk.com/repository/youclk/ -DrepositoryId=youclk
管理和查看:
3.1 引用
Finally,最后的最后就是怎么使用啦~ 如果需要全局引用的话需要在 settings.xml 添加和激活仓库:
<?xml version="1.0" encoding="UTF-8"?>
<settings><mirrors> <mirror><id>aliyun</id><mirrorOf>central</mirrorOf><name>central mirror</name><url>http://maven.aliyun.com/mvn/repository</url></mirror><mirror><id>nexus</id><mirrorOf>maven-public</mirrorOf><name>private mirror</name><url>http://local-nexus.youclk.com/repository/maven-public/</url></mirror></mirrors> <servers><server> <id>nexus</id> <username>admin</username><password>youclk</password> </server></servers><profiles> <profile> <id>nexus</id> <repositories> <repository> <id>maven</id> <name>local private nexus</name> <url>http://local-nexus.youclk.com/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven</id> <name>local private nexus</name> <url>http://local-nexus.youclk.com/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile></profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>
</settings>
不过一般不推荐这么写,settings.xml 应该尽可能保持简洁,精简配置,此处留下代理和权限认证即可,其余的可以移植到 pom.xml 中:
<repositories><repository><id>aliyun</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url></repository><repository><id>nexus</id><url>http://local-nexus.youclk.com/repository/maven-public/</url></repository>
</repositories>
<pluginRepositories><pluginRepository><id>central</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url></pluginRepository><pluginRepository><id>maven-public</id><url>http://local-nexus.youclk.com/repository/maven-public/</url></pluginRepository>
</pluginRepositories>
转载于:https://my.oschina.net/u/3721254/blog/1806857
Spring Boot 多模块与 Maven 私有仓库相关推荐
- Maven 搭建spring boot多模块项目(附源码)
Maven 搭建spring boot多模块项目 备注:所有项目都在idea中创建 1.idea创建maven项目 1-1: 删除src,target目录,只保留pom.xml 1-2: 根目录pom ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-03备份和恢复
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-05仓库管理
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-09权限(Privileges)
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-17审计
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-29上传组件
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
- 实战maven私有仓库三部曲之一:搭建和使用
在局域网内搭建maven私有仓库,可避免每次都从中央仓库下载公共jar包,另外将A模块作为二方库发布到私有仓库后,B模块可以很方便的引用,今天我们就来实战maven私有仓库的搭建和使用: 原文地址:h ...
- 使用Nexus配置Maven私有仓库
使用Nexus配置Maven私有仓库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装配置Nexus 1>.下载nexus 下载地址:https://www.sonat ...
- 如何发布Android Library到maven私有仓库
前言 在我们的项目架构中,一定存在一些基础的模块,这些模块可以在多个app上通用,这种情况我们一般会将这些模块封装成Android Library统一维护,并上传到仓库方便其他小组使用.仓库可以选择如 ...
最新文章
- 第十八章 33用重载输出运算符函数实现字符串的输出
- 解决git提交敏感信息(回退git版本库到某一个commit)
- 【错误记录】Android 文件查看错误 ( Error opening contents of device file ““: Cannot create directory )
- 生鲜配送小程序源码_生鲜配送小程序开发
- C++总结笔记(五)——构造函数和析构函数
- 上几个WebAPI就算微服务架构?Too Young!
- C++ linux系统api
- Oracle基础 TO_CHAR函数参考(转)
- 图像局部特征(二十)--Textons
- DSP之时钟与定时器之一时钟发生器
- jquery weui 上拉加载,下拉刷新,问题解答。
- CS1.6自定义游戏中的H菜单和设置菜单,增加一键买枪功能
- 8款主流Scrum敏捷开发工具评测,建议先马后看!
- 史上最详细的UE4安装教程(没有之一,就是史上最详细,不服气你来打我呀)
- 『IT视界』 [原创评论]揪出"程序员"身上的"六宗罪"
- 贪吃蛇_C语言_VS2019
- 从零开始学习NLP - 综述与论文查找指南(待更新)
- js爬取今日头条头条号的文章
- 最新电脑CPU天梯图
- 参考文献在Latex编译后的文章中无法显示