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 私有仓库相关推荐

  1. Maven 搭建spring boot多模块项目(附源码)

    Maven 搭建spring boot多模块项目 备注:所有项目都在idea中创建 1.idea创建maven项目 1-1: 删除src,target目录,只保留pom.xml 1-2: 根目录pom ...

  2. 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-03备份和恢复

    亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...

  3. 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-05仓库管理

    亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...

  4. 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-09权限(Privileges)

    亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...

  5. 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-17审计

    亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...

  6. 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-29上传组件

    亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...

  7. 实战maven私有仓库三部曲之一:搭建和使用

    在局域网内搭建maven私有仓库,可避免每次都从中央仓库下载公共jar包,另外将A模块作为二方库发布到私有仓库后,B模块可以很方便的引用,今天我们就来实战maven私有仓库的搭建和使用: 原文地址:h ...

  8. 使用Nexus配置Maven私有仓库

    使用Nexus配置Maven私有仓库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装配置Nexus 1>.下载nexus 下载地址:https://www.sonat ...

  9. 如何发布Android Library到maven私有仓库

    前言 在我们的项目架构中,一定存在一些基础的模块,这些模块可以在多个app上通用,这种情况我们一般会将这些模块封装成Android Library统一维护,并上传到仓库方便其他小组使用.仓库可以选择如 ...

最新文章

  1. 第十八章 33用重载输出运算符函数实现字符串的输出
  2. 解决git提交敏感信息(回退git版本库到某一个commit)
  3. 【错误记录】Android 文件查看错误 ( Error opening contents of device file ““: Cannot create directory )
  4. 生鲜配送小程序源码_生鲜配送小程序开发
  5. C++总结笔记(五)——构造函数和析构函数
  6. 上几个WebAPI就算微服务架构?Too Young!
  7. C++ linux系统api
  8. Oracle基础 TO_CHAR函数参考(转)
  9. 图像局部特征(二十)--Textons
  10. DSP之时钟与定时器之一时钟发生器
  11. jquery weui 上拉加载,下拉刷新,问题解答。
  12. CS1.6自定义游戏中的H菜单和设置菜单,增加一键买枪功能
  13. 8款主流Scrum敏捷开发工具评测,建议先马后看!
  14. 史上最详细的UE4安装教程(没有之一,就是史上最详细,不服气你来打我呀)
  15. 『IT视界』 [原创评论]揪出"程序员"身上的"六宗罪"
  16. 贪吃蛇_C语言_VS2019
  17. 从零开始学习NLP - 综述与论文查找指南(待更新)
  18. js爬取今日头条头条号的文章
  19. 最新电脑CPU天梯图
  20. 参考文献在Latex编译后的文章中无法显示

热门文章

  1. 并发编程-18AQS同步组件之 CyclicBarrier 同步屏障
  2. 实战SSM_O2O商铺_09【商铺注册】DTO之ShopExecution的实现
  3. Spring JDBC-Spring对DAO的支持
  4. Linux 磁盘I/O读写速度检测
  5. 信息提醒之Toast-更新中
  6. 常用邮件客户端软件设置
  7. Matlab-运算符
  8. python3网上学习资源汇总
  9. matlab GUI和simulink参数传递
  10. 来淄博旅游_JAVA