当前位置:   article > 正文

【springboot进阶】基于starter项目构建(一)父级项目_springboot父子项目的搭建

springboot父子项目的搭建

目录

一、构建自己的父级项目

1、创建父级项目

2、构建自己的项目依赖

二、构建 Spring Cloud 的父级项目

1、创建父级项目

2、构建项目依赖

三、父级项目打包


这个系列讲解项目的构建方式,主要使用 父项目 parent 和 自定义 starter 结合。项目使用最新的 springboot3 和 jdk19。本系列的代码仓库看查看 gitee 仓库

这篇我们学习一下父级项目的构建,为以后创建的 Spring Boot 项目构建出所需的项目依赖包。

一、构建自己的父级项目

如果你使用过Spring Boot,那么你肯定知道项目需要引入一个spring-boot-starter-parent,这是 Spring Boot 的父级依赖,它用来提供相关的 Maven 默认依赖。

那么我们也可以类似的,构建属于自己的父级依赖,其他的项目引入后就可以继承父级相关依赖。

1、创建父级项目

我们创建一个父级项目,以 Spring Initializr 的方式创建,项目命名为 backend-parent 。

 Spring Boot 使用目前最新的 3.0.0 版本,下面的依赖不需要勾选,直接点击 "Create" 创建项目。

 项目创建好后,我们删掉不需要的代码包,只需要留一个pom.xml文件即可。 

2、构建自己的项目依赖

贴上 pom 文件引入的 Maven 依赖包,这里可以根据自己的实际项目情况,引入所需的依赖包。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <parent>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-starter-parent</artifactId>
  7. <version>3.0.0</version>
  8. <relativePath />
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <modules>
  12. <module>backend-cloud-parent</module>
  13. </modules>
  14. <groupId>org.liurb.springboot.scaffold</groupId>
  15. <artifactId>backend-parent</artifactId>
  16. <packaging>pom</packaging>
  17. <version>1.0.0</version>
  18. <name>backend-parent</name>
  19. <properties>
  20. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  21. <java.version>19</java.version>
  22. <maven.compiler.source>${java.version}</maven.compiler.source>
  23. <maven.compiler.target>${java.version}</maven.compiler.target>
  24. <fastjson.version>2.0.19</fastjson.version>
  25. <hutool.version>5.8.10</hutool.version>
  26. <commons-pool2.version>2.11.1</commons-pool2.version>
  27. <mybatis-plus-boot-starter.version>3.5.2.7-SNAPSHOT</mybatis-plus-boot-starter.version>
  28. <mybatis-plus-generator.version>3.5.3</mybatis-plus-generator.version>
  29. <mybatis-plus-join.version>1.3.7</mybatis-plus-join.version>
  30. <javax.mail.version>1.4.7</javax.mail.version>
  31. <bcprov-jdk15on.version>1.70</bcprov-jdk15on.version>
  32. <java-jwt.version>4.2.1</java-jwt.version>
  33. <mysql-connector-java.version>8.0.31</mysql-connector-java.version>
  34. <commons-lang3.version>3.12.0</commons-lang3.version>
  35. <okhttp.version>4.10.0</okhttp.version>
  36. <mapstruct.version>1.5.3.Final</mapstruct.version>
  37. <gson.version>2.10</gson.version>
  38. <junit.version>4.11</junit.version>
  39. </properties>
  40. <dependencyManagement>
  41. <dependencies>
  42. <dependency>
  43. <groupId>cn.hutool</groupId>
  44. <artifactId>hutool-all</artifactId>
  45. <version>${hutool.version}</version>
  46. </dependency>
  47. <dependency>
  48. <groupId>com.alibaba.fastjson2</groupId>
  49. <artifactId>fastjson2</artifactId>
  50. <version>${fastjson.version}</version>
  51. </dependency>
  52. <dependency>
  53. <groupId>com.alibaba.fastjson2</groupId>
  54. <artifactId>fastjson2-extension</artifactId>
  55. <version>${fastjson.version}</version>
  56. </dependency>
  57. <dependency>
  58. <groupId>org.apache.commons</groupId>
  59. <artifactId>commons-pool2</artifactId>
  60. <version>${commons-pool2.version}</version>
  61. </dependency>
  62. <dependency>
  63. <groupId>com.baomidou</groupId>
  64. <artifactId>mybatis-plus-boot-starter</artifactId>
  65. <version>${mybatis-plus-boot-starter.version}</version>
  66. </dependency>
  67. <dependency>
  68. <groupId>com.baomidou</groupId>
  69. <artifactId>mybatis-plus-generator</artifactId>
  70. <version>${mybatis-plus-generator.version}</version>
  71. </dependency>
  72. <dependency>
  73. <groupId>com.github.yulichang</groupId>
  74. <artifactId>mybatis-plus-join</artifactId>
  75. <version>${mybatis-plus-join.version}</version>
  76. </dependency>
  77. <dependency>
  78. <groupId>javax.mail</groupId>
  79. <artifactId>mail</artifactId>
  80. <version>${javax.mail.version}</version>
  81. </dependency>
  82. <dependency>
  83. <groupId>org.bouncycastle</groupId>
  84. <artifactId>bcprov-jdk15on</artifactId>
  85. <version>${bcprov-jdk15on.version}</version>
  86. </dependency>
  87. <dependency>
  88. <groupId>com.auth0</groupId>
  89. <artifactId>java-jwt</artifactId>
  90. <version>${java-jwt.version}</version>
  91. </dependency>
  92. <dependency>
  93. <groupId>com.mysql</groupId>
  94. <artifactId>mysql-connector-j</artifactId>
  95. <version>${mysql-connector-java.version}</version>
  96. </dependency>
  97. <dependency>
  98. <groupId>org.apache.commons</groupId>
  99. <artifactId>commons-lang3</artifactId>
  100. <version>${commons-lang3.version}</version>
  101. </dependency>
  102. <dependency>
  103. <groupId>com.squareup.okhttp3</groupId>
  104. <artifactId>okhttp</artifactId>
  105. <version>${okhttp.version}</version>
  106. </dependency>
  107. <dependency>
  108. <groupId>org.mapstruct</groupId>
  109. <artifactId>mapstruct</artifactId>
  110. <version>${mapstruct.version}</version>
  111. </dependency>
  112. <dependency>
  113. <groupId>org.mapstruct</groupId>
  114. <artifactId>mapstruct-processor</artifactId>
  115. <version>${mapstruct.version}</version>
  116. </dependency>
  117. <dependency>
  118. <groupId>com.google.code.gson</groupId>
  119. <artifactId>gson</artifactId>
  120. <version>${gson.version}</version>
  121. </dependency>
  122. <dependency>
  123. <groupId>junit</groupId>
  124. <artifactId>junit</artifactId>
  125. <version>${junit.version}</version>
  126. </dependency>
  127. </dependencies>
  128. </dependencyManagement>
  129. </project>

父级项目通过 dependencyManagement 标签可以先声明一些公共的依赖包,子项目如果需要用到哪个依赖包,就只需要在该项目的 pom 文件声明即可,不需要填版本号,这样就可以继承父级项目的版本号,以后就可以通过父级项目统一管理依赖的版本号。

Maven 可以通过 dependencyManagement 元素对依赖进行管理,它具有以下 2 大特性:

  • 在该元素下声明的依赖不会实际引入到模块中,只有在 dependencies 元素下同样声明了该依赖,才会引入到模块中。
  • 该元素能够约束 dependencies 下依赖的使用,即 dependencies 声明的依赖若未指定版本,则使用 dependencyManagement 中指定的版本,否则将覆盖 dependencyManagement 中的版本。

二、构建 Spring Cloud 的父级项目

因为一般 Spring Cloud 项目都是一个 Spring Boot 项目,所以我们只需要继承上面创建的父级项目,来构建 Spring Cloud 父级项目即可。

1、创建父级项目

这里我们以模块的方式创建,命令为 backend-cloud-parent 。

 同样的,项目创建好后,我们删掉不需要的代码包,只需要留一个pom.xml文件即可。 

2、构建项目依赖

贴上 pom 文件引入的 Maven 依赖包,因为是继承上面定义的父级项目,所以这里只需要声明 Spring Cloud 项目需要用到的依赖包即可。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <parent>
  5. <artifactId>backend-parent</artifactId>
  6. <groupId>org.liurb.springboot.scaffold</groupId>
  7. <version>1.0.0</version>
  8. </parent>
  9. <modelVersion>4.0.0</modelVersion>
  10. <artifactId>backend-cloud-parent</artifactId>
  11. <packaging>pom</packaging>
  12. <version>1.0.0</version>
  13. <name>backend-cloud-parent</name>
  14. <properties>
  15. <spring-cloud.version>2021.0.5</spring-cloud.version>
  16. </properties>
  17. <dependencyManagement>
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.cloud</groupId>
  21. <artifactId>spring-cloud-dependencies</artifactId>
  22. <version>${spring-cloud.version}</version>
  23. <type>pom</type>
  24. <scope>import</scope>
  25. </dependency>
  26. </dependencies>
  27. </dependencyManagement>
  28. </project>

需要特别注意的是 type 标签是以 pom 的方式引入,而 scope 标签为 import ,即强制子模块使用与父模块完全一致的版本号。

三、父级项目打包

父级项目已经构建好了,那么要怎么使用这两个父级项目呢?答案是将它们打包,通过其他项目即可通过 Maven 依赖引入。

目前创建好的两个父级项目的结构如下。

  一般生产上,我们都会将这种项目放在服务器私服仓库中(如阿里云的云效),因为我们这边只是演示,所以我们只需要打到本地仓库即可。

打开 Idea 右侧的 Maven 标签,点开 backend-parent ,双击 package ,执行完成后,双击 install ,即可安装到本地仓库。

这里是从根(root)项目打包,那么将会子项目 backend-cloud-parent 也一块打包,如果只需要将子项目打包,那么就打开对应的项目下的命令进行打包。

这时候,打开本地仓库,就可以看到我们刚才打包的两个目录。

依次打开 backend-parent 目录,会发现里面只有一个 pom 文件,因为我们定义的类型就是 pom 

到此,属于自己的父级项目即构建完成,以后创建子项目时,我们就可以引入这个父级项目。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/1019269
推荐阅读
相关标签
  

闽ICP备14008679号