目录

  • 一、创建bom工程
    • 1.1、第一步
    • 1.2、第二步
    • 1.3、第三步
  • 二、pom文件配置
  • 三、maven私服配置
    • 3.1、镜像源配置
    • 3.2、私服账户配置
  • 四、脚本
    • 4.1、安装脚本
    • 4.2、发布脚本
    • 4.3、打包脚本
  • 五、安装到本地或发布到私服
  • 结语

一、创建bom工程

1.1、第一步

1.2、第二步

1.3、第三步


  总体来说它就是一个maven工程。

二、pom文件配置

pom.xml

<?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>cn.alian.microservice</groupId><artifactId>bom</artifactId><version>1.0.0-SNAPSHOT</version><packaging>pom</packaging><!--属性配置--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><!--spring-cloud版本--><spring-cloud.version>Hoxton.SR12</spring-cloud.version><!--spring-boot版本--><spring-boot.version>2.3.12.RELEASE</spring-boot.version><!--Spring boot Redis版本--><redis.version>2.3.3.RELEASE</redis.version><!--swagger版本--><swagger.version>2.9.2</swagger.version><!--swagger parser版本--><swagger.annotations.version>1.5.20</swagger.annotations.version><!--swagger parser版本--><swagger.parser.version>1.0.36</swagger.parser.version><!--data Ebean版本--><data.ebean.version>2.0.0.RELEASE</data.ebean.version><!--Ebean版本(版本很难找啊:11.45.1)--><io.ebean.version>12.2.6</io.ebean.version><!--spring boot druid版本--><druid.version>1.2.6</druid.version><!--mysql版本--><mysql.version>8.0.26</mysql.version><!--shedlock版本--><shedlock.version>4.32.0</shedlock.version><!--dozermapper版本--><dozermapper.version>6.5.0</dozermapper.version><!--jsoup版本--><jsoup.version>1.14.1</jsoup.version><!--fastjson版本--><fastjson.version>1.2.75</fastjson.version><!--jackson版本--><jackson.version>2.12.2</jackson.version><!--lombok版本--><lombok.version>1.18.20</lombok.version><!--mockito版本--><mockito.version>4.3.0</mockito.version><!--私服地址--><nexus.url>http://192.168.0.210:8081</nexus.url></properties><!--依赖管理,主要是管理依赖的版本--><dependencyManagement><dependencies><!--springCloud版本依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--springBoot版本依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- 稳定版redis --><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>${redis.version}</version></dependency><!-- swagger2.0 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>${swagger.annotations.version}</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-parser</artifactId><version>${swagger.parser.version}</version></dependency><!-- Ebean support --><dependency><groupId>io.github.hexagonframework.boot</groupId><artifactId>spring-boot-starter-data-ebean</artifactId><version>${data.ebean.version}</version></dependency><!-- Ebean --><dependency><groupId>io.ebean</groupId><artifactId>ebean</artifactId><version>${io.ebean.version}</version></dependency><!-- Query bean --><dependency><groupId>io.ebean</groupId><artifactId>ebean-querybean</artifactId><version>${io.ebean.version}</version></dependency><!-- APT Query bean generation for Java --><dependency><groupId>io.ebean</groupId><artifactId>querybean-generator</artifactId><version>${io.ebean.version}</version><scope>provided</scope></dependency><!-- eureka-client scope runtime --><dependency><groupId>com.sun.jersey.contribs</groupId><artifactId>jersey-apache-client4</artifactId><version>1.19.4</version></dependency><!--log4jdbc驱动打印sql--><dependency><groupId>com.googlecode.log4jdbc</groupId><artifactId>log4jdbc</artifactId><version>1.2</version></dependency><!--druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!--mysql连接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>runtime</scope></dependency><!--分布式锁--><dependency><groupId>cn.keking</groupId><artifactId>spring-boot-klock-starter</artifactId><version>1.4-RELEASE</version></dependency><!--分布式定时任务锁--><dependency><groupId>net.javacrumbs.shedlock</groupId><artifactId>shedlock-spring</artifactId><version>${shedlock.version}</version></dependency><dependency><groupId>net.javacrumbs.shedlock</groupId><artifactId>shedlock-provider-redis-spring</artifactId><version>${shedlock.version}</version></dependency><!--dozer属性映射(超好用)--><dependency><groupId>com.github.dozermapper</groupId><artifactId>dozer-spring-boot-starter</artifactId><version>${dozermapper.version}</version></dependency><dependency><groupId>com.github.dozermapper</groupId><artifactId>dozer-core</artifactId><version>${dozermapper.version}</version></dependency><!--common的公共包--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.10.0</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency><dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>1.9</version></dependency><!--jsoup--><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.14.1</version></dependency><!--阿里巴巴的fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!--jackson--><dependency><groupId>com.github.joschi.jackson</groupId><artifactId>jackson-datatype-threetenbp</artifactId><version>${jackson.version}</version></dependency><!--guava工具库--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version></dependency><dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version></dependency><!--类扫描工具--><dependency><groupId>io.github.classgraph</groupId><artifactId>classgraph</artifactId><version>4.8.140</version></dependency><!--日志--><dependency><groupId>org.zalando</groupId><artifactId>logbook-spring-boot-starter</artifactId><version>2.0.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!--mock单元测试--><dependency><groupId>org.mockito</groupId><artifactId>mockito-junit-jupiter</artifactId><version>${mockito.version}</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-inline</artifactId><version>${mockito.version}</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>${mockito.version}</version><scope>test</scope></dependency></dependencies></dependencyManagement><!--依赖的下载地址--><repositories><repository><id>nexus-repos</id><name>Team Nexus Repository</name><url>${nexus.url}/nexus/content/groups/public</url></repository><repository><id>nexus-repos-snapshots</id><name>Team Nexus Repository Snapshots</name><url>${nexus.url}/nexus/content/groups/public-snapshots</url></repository></repositories><!--插件的下载地址--><pluginRepositories><pluginRepository><id>nexus-repos</id><name>Team Nexus Repository</name><url>${nexus.url}/nexus/content/groups/public</url></pluginRepository><pluginRepository><id>nexus-repos-snapshots</id><name>Team Nexus Repository Snapshots</name><url>${nexus.url}/nexus/content/groups/public-snapshots</url></pluginRepository></pluginRepositories><!--打包成库文件的上传地址--><distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>${nexus.url}/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>${nexus.url}/nexus/content/repositories/snapshots/</url></snapshotRepository></distributionManagement></project>

  我这里选择的依赖都是比较新且稳定的版本,你也可以根据自己的需要进行调整,主要有

  • Spring Boot
  • Spring Cloud
  • Eureka
  • Swagger
  • Redis分布式锁
  • 分布式定时任务锁
  • Ebean
  • DozerMapping
  • MySQL
  • mockito单元测试
  • 其他常用工具包

  这里对 dependenciesdependencyManagement 做一个说明

类型 作用
dependencies 项目具体使用的依赖
dependencyManagement 依赖管理,项目并不会引用依赖到项目,只有在子项目中直接应用 groupIdartifactId ,而不用指定版本,才会从父项目中继承该项,如果子项目中指定了版本号,那么会使用子项目中指定的jar版本

  这里对 repositoriespluginRepositoriesdistributionManagement 做一个说明

类型 作用
repositories 配置依赖的下载地址,可以是私服和其他镜像源结合(比如阿里云)
pluginRepositories 配置插件的下载地址(如很多打包的插件)
distributionManagement 打包成库文件的上传地址,一般是上传到私服

三、maven私服配置

3.1、镜像源配置

  在你maven安装路径下面的 conf/setting.xml 中的 mirrors标签 里添加成如下(私服 + 阿里云):

 <mirrors><mirror><!-- 私服的地址--><id>nexus-repos</id><name>Team Nexus Repository</name><url>http://192.168.0.210:8080/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf>  </mirror><mirror><!-- 阿里云的地址--><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>

  这样的好处是你可以优先从你的私服下载,私服没有了也可以通过阿里云镜像去下载。

3.2、私服账户配置

  同时还需要在 conf/setting.xml 中的 servers标签 配置成如下:

  <servers><!--release版本--><server>  <id>releases</id>  <username>私服的账号</username>  <password>私服密码</password>  </server> <!--snapshots版本--><server>  <id>snapshots</id>  <username>私服的账号</username>  <password>私服密码</password>  </server> </servers>

四、脚本

  能够使用这些脚本的前提是你的maven环境安装好了。不会的可以,可以问问度娘。(我这里是windows环境开发的,用的是bat,当然如果是linux,你就要编写xx.sh文件了)

4.1、安装脚本

install.bat

cd %~dp0
cd..call mvn clean install -Dmaven.test.skip=truecd bin
pause

4.2、发布脚本

deploy.bat

cd %~dp0
cd..call mvn clean deploy -Dmaven.test.skip=truecd bin
pause

4.3、打包脚本

package.bat

cd %~dp0
cd..call mvn clean package -Ppack -X -Dmaven.test.skip=truecd bin
pause

  这三个脚本,后面的项目会经常用到哦!

五、安装到本地或发布到私服

  执行我的脚本即可…

安装到本地

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building bom 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ bom ---
[INFO] Deleting C:\workspace\study\spring-cloud-microservices\bom\target
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ bom ---
[INFO] Installing C:\workspace\study\spring-cloud-microservices\bom\pom.xml to C:\Users\admin\.m2\repository\cn\alian\microservice\bom\1.0.0-SNAPSHOT\bom-1.0.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.501 s
[INFO] Finished at: 2022-03-23T10:19:46+08:00
[INFO] Final Memory: 10M/243M
[INFO] ------------------------------------------------------------------------
Press any key to continue . . .

发布到私服

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building bom 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ bom ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ bom ---
[INFO] Installing C:\workspace\study\spring-cloud-microservices\bom\pom.xml to C:\Users\admin\.m2\repository\cn\alian\microservice\bom\1.0.0-SNAPSHOT\bom-1.0.0-SNAPSHOT.pom
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ bom ---
Downloading: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/1.0.0-SNAPSHOT/maven-metadata.xml
Uploading: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/1.0.0-SNAPSHOT/bom-1.0.0-20220323.022110-1.pom
Uploaded: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/1.0.0-SNAPSHOT/bom-1.0.0-20220323.022110-1.pom (12 KB at 117.0 KB/sec)
Downloading: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/maven-metadata.xml
Uploading: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/1.0.0-SNAPSHOT/maven-metadata.xml
Uploaded: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/1.0.0-SNAPSHOT/maven-metadata.xml (601 B at 9.9 KB/sec)
Uploading: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/maven-metadata.xml
Uploaded: http://192.168.0.210:8081/nexus/content/repositories/snapshots/cn/alian/microservice/bom/maven-metadata.xml (284 B at 4.6 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.292 s
[INFO] Finished at: 2022-03-23T10:21:10+08:00
[INFO] Final Memory: 13M/243M
[INFO] ------------------------------------------------------------------------
Press any key to continue . . .

结语

  BOM全称是Bill Of Materials,译作材料清单,BOM的好处是用来管理一个工程的所有依赖版本信息,这样各个工程的版本比较一致,减少了不同版本中冲突和不兼容的问题,良好的项目都是从一个bom开始,本文介绍了它的创建,以及非常实用的脚本,我们接下里的工程都会用到的哦。

(一)Alian 的 Spring Cloud Bom(Bom即材料清单)相关推荐

  1. (三)Alian 的 Spring Cloud Eureka Server(服务注册中心)

    目录 一.创建Eureka服务工程 1.1.第一步(创建工程) 1.2.第二步(springboot工程) 1.3.第三步(工程设置) 1.4.第四步(依赖选择) 二.配置 2.1.pom文件 2.2 ...

  2. (十)Alian 的 Spring Cloud 库存系统

    目录 一.背景 二.数据库 1.1.创建数据库 1.2.创建表 1.3.初始数据 1.4.配置中心数据 三.domain-stock 3.1.实体类 3.2.持久层 3.3.打包到私服 四.maven ...

  3. (十八)Alian 的 Spring Cloud Gateway 集群配置

    目录 一.简介 二.配置 三.配置文件 3.1.application.properties 四.主类 五.部署及配置 5.1.部署 5.2.Nginx配置 5.3.Spring Cloud Gate ...

  4. (七)Alian 的 Spring Cloud Config 配置中心(客户端)

    目录 一.背景 二.maven依赖 三.配置文件 四.验证 一.背景   通过上一篇文章,我们已经搭建了配置中心了,接下里我们继续改造我们的订单服务了,之前我们的订单服务的数据库配置还是写在配置文件中 ...

  5. (十一)Alian 的 Spring Cloud 文档中心(swagger聚合文档)

    目录 一.简介 1.1.maven依赖 二.核心配置类 2.1.SwaggerUI配置 2.2.服务定义的上下文 2.3.定时刷下文档定义 2.4.文档接口 三.配置 3.1.主类 3.2.boots ...

  6. (十五)Alian 的 Spring Cloud 自动生成项目

    目录 一.创建 1.1.第一步 二.mvn命令 三.生成项目 3.1.配置 3.1.属性配置 3.2.控制层 3.3.服务层 四.验证 4.1.请求生成项目 4.2.生成项目结果 4.3.项目结构 一 ...

  7. (十二)Alian 的 Spring Cloud 自定义Archetype

    目录 一.简介 1.1.archetype目录结构 1.2.Archetype Domain结构图 1.3.Archetype Project结构图 二.Archetype Project 2.1.项 ...

  8. (十九)Alian 的 Spring Cloud Config 集群配置

    目录 一.简介 1.1.第一步 二.maven依赖 三.配置 3.1.application.properties 3.2.主类 四.客户端修改(支付系统) 4.1 maven依赖 4.2 支付系统主 ...

  9. (六)Alian 的 Spring Cloud Config 配置中心(服务端)

    目录 一.简介 二.数据库 2.1.应用表 2.2.属性表 2.3.视图 2.4.初始化数据 三.配置 3.1.pom.xml 3.2.application.properties 3.3.主类 3. ...

最新文章

  1. MySQL57安装与设置
  2. WINDOWS SERVER 2003从入门到精通之组策略应用
  3. 04-多核多cluster多系统之间缓存一致性概述
  4. PHP复习第二天-变量
  5. CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解
  6. Windows Azure SDK 1.6让Visual Studio下的Azure开发更高效
  7. servlet请求的执行过程_Springmvc执行流程
  8. python资料-python 资料
  9. 深度置信网络简要介绍
  10. TCP/IP报文详解
  11. 【Tool工具】LICEcap 推荐 GIf录制工作- 如何简单录制一个gif(Mac Window都可)
  12. 找单身狗版本2(有两个单身狗)
  13. 阵列分组,不足数,补足
  14. 东方国信携手Cloudera 共创Hadoop生态圈辉煌
  15. java 一维码架包_Java 生成、识别条形码
  16. c语言求1000以内素数个数的方法
  17. [渝粤教育] 北部湾大学 团体心理辅导 参考 资料
  18. 关于游戏模板,我们想知道游戏开发者们怎么看
  19. 主要的计算机犯罪类型的是,计算机犯罪类型是什么
  20. Android 进程使用 Messenger 通信

热门文章

  1. JavaScript 1 JavaScript 教程
  2. 一种基于计算机视觉的摄像机智能火灾检测方法 (英文论文翻译 )
  3. matlab最小二乘法拟合参数,matlab最小二乘法拟合
  4. uniapp 离线打包
  5. java 内核线程_Java线程和内核数
  6. java radiobutton获取信息_java-如何获取从ButtonGroup中选择的哪个JRadioButton
  7. SpringBoot监控服务器信息以及SpringBoot自带Health Indicator
  8. 【数据清洗预处理——四】使用大数据实训云
  9. js实现金额数转简体/繁体中文
  10. PostgreSQL学习篇9.15 JSON类型