• 【java】【重构二】分模块开发版本锁定以及耦合(打包)实战


    目录

    一、创建dependencyManagement标签

    二、 将需要版本控制的依赖版本进行标签设置

    三、将需要版本控制的依赖从各子模块迁移到此处 

    四、将父模块的依赖版本控制

    五、删除子模块的全部版本 

     1、bocai-web-management模块

    2、bocai-utils模块

    六、打包

    1、确定代码都可执行,无错误

    2、bocai-parent加入标签

    3、完整的bocai-parent的pom

    3、打包

    七、使用jar启动服务


    前言:结合上篇《【java】【重构一】分模块开发设计实战》,进行版本锁定,明确dependencyManagement与dependencies区别

    一、创建dependencyManagement标签

    在父模块创建dependencyManagement以及dependencies

    1. <dependencyManagement>
    2. <dependencies>
    3. dependencies>
    4. dependencyManagement>

    二、 将需要版本控制的依赖版本进行标签设置

    springboot项目无需控制

    1. <properties>
    2. <java.version>1.8</java.version>
    3. <!-- 8、自定义属性 -->
    4. <lombok.version>1.18.24</lombok.version>
    5. <aliyun-sdk-oss.version>3.15.1</aliyun-sdk-oss.version>
    6. <jaxb-api.version>2.3.1</jaxb-api.version>
    7. <activation.version>1.1.1</activation.version>
    8. <jaxb-runtime.version>2.3.3</jaxb-runtime.version>
    9. <mybatis.version>2.3.1</mybatis.version>
    10. <mysql-connector-j.version>8.0.31</mysql-connector-j.version>
    11. <pagehelper.version>1.4.6</pagehelper.version>
    12. <fastjson.version>1.2.76</fastjson.version>
    13. <jjwt.version>0.9.0</jjwt.version>
    14. <!-- 无需配置,因为springboot已经版本控制了 -->
    15. <!--
    16. <spring-boot-starter-test.version>2.7.5</spring-boot-starter-test.version>
    17. <spring-boot-starter-aop.version>2.7.5</spring-boot-starter-aop.version>
    18. <spring-boot-starter-web.version>2.7.5</spring-boot-starter-web.version>
    19. -->
    20. </properties>

    三、将需要版本控制的依赖从各子模块迁移到此处 

    使用第二步设置的标签进行版本控制

    1. <!-- 7、 版本锁定 -->
    2. <dependencyManagement>
    3. <dependencies>
    4. <!-- 阿里云OSS依赖-->
    5. <dependency>
    6. <groupId>com.aliyun.oss</groupId>
    7. <artifactId>aliyun-sdk-oss</artifactId>
    8. <version>${aliyun-sdk-oss.version}</version>
    9. </dependency>
    10. <dependency>
    11. <groupId>javax.xml.bind</groupId>
    12. <artifactId>jaxb-api</artifactId>
    13. <version>${jaxb-api.version}</version>
    14. </dependency>
    15. <dependency>
    16. <groupId>javax.activation</groupId>
    17. <artifactId>activation</artifactId>
    18. <version>${activation.version}</version>
    19. </dependency>
    20. <!-- no more than 2.3.3-->
    21. <dependency>
    22. <groupId>org.glassfish.jaxb</groupId>
    23. <artifactId>jaxb-runtime</artifactId>
    24. <version>${jaxb-runtime.version}</version>
    25. </dependency>
    26. <!--JWT令牌-->
    27. <dependency>
    28. <groupId>io.jsonwebtoken</groupId>
    29. <artifactId>jjwt</artifactId>
    30. <version>${jjwt.version}</version>
    31. </dependency>
    32. <!-- mybatis起步依赖 -->
    33. <dependency>
    34. <groupId>org.mybatis.spring.boot</groupId>
    35. <artifactId>mybatis-spring-boot-starter</artifactId>
    36. <version>${mybatis.version}</version>
    37. </dependency>
    38. <!-- mysql驱动 -->
    39. <dependency>
    40. <groupId>com.mysql</groupId>
    41. <artifactId>mysql-connector-j</artifactId>
    42. <scope>runtime</scope>
    43. <version>${mysql-connector-j.version}</version>
    44. </dependency>
    45. <!-- PageHelper分页插件https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
    46. <dependency>
    47. <groupId>com.github.pagehelper</groupId>
    48. <artifactId>pagehelper-spring-boot-starter</artifactId>
    49. <version>${pagehelper.version}</version>
    50. </dependency>
    51. <!--fastJSON-->
    52. <dependency>
    53. <groupId>com.alibaba</groupId>
    54. <artifactId>fastjson</artifactId>
    55. <version>${fastjson.version}</version>
    56. </dependency>
    57. <!-- 100、 无需配置,因为在springboot当中已经版本控制了 -->
    58. <!-- web起步依赖
    59. <dependency>
    60. <groupId>org.springframework.boot</groupId>
    61. <artifactId>spring-boot-starter-web</artifactId>
    62. <version>${spring-boot-starter-web.version}</version>
    63. </dependency>
    64. -->
    65. <!-- springboot单元测试
    66. <dependency>
    67. <groupId>org.springframework.boot</groupId>
    68. <artifactId>spring-boot-starter-test</artifactId>
    69. <scope>test</scope>
    70. <version>${spring-boot-starter-test.version}</version>
    71. </dependency>
    72. -->
    73. <!--AOP
    74. <dependency>
    75. <groupId>org.springframework.boot</groupId>
    76. <artifactId>spring-boot-starter-aop</artifactId>
    77. <version>${spring-boot-starter-aop.version}</version>
    78. </dependency>
    79. -->
    80. </dependencies>
    81. </dependencyManagement>

    四、将父模块的依赖版本控制

    1. <dependencies>
    2. <!-- 6、 加入的公共依赖 -->
    3. <!-- lombok -->
    4. <dependency>
    5. <groupId>org.projectlombok</groupId>
    6. <artifactId>lombok</artifactId>
    7. <version>${lombok.version}</version>
    8. </dependency>
    9. <!-- 4、注释以下依赖 -->
    10. <!--
    11. <dependency>
    12. <groupId>org.springframework.boot</groupId>
    13. <artifactId>spring-boot-starter</artifactId>
    14. </dependency>
    15. <dependency>
    16. <groupId>org.springframework.boot</groupId>
    17. <artifactId>spring-boot-starter-test</artifactId>
    18. <scope>test</scope>
    19. </dependency>
    20. -->
    21. </dependencies>

    五、删除子模块的全部版本 

     1、bocai-web-management模块

    1. <!-- 3、加入 子模块依赖 -->
    2. <dependency>
    3. <groupId>com.bocai</groupId>
    4. <artifactId>bocai-entity</artifactId>
    5. <version>0.0.1-SNAPSHOT</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.bocai</groupId>
    9. <artifactId>bocai-utils</artifactId>
    10. <version>0.0.1-SNAPSHOT</version>
    11. </dependency>
    12. <!-- 4、加入依赖 -->
    13. <!-- web起步依赖 -->
    14. <dependency>
    15. <groupId>org.springframework.boot</groupId>
    16. <artifactId>spring-boot-starter-web</artifactId>
    17. </dependency>
    18. <!-- mybatis起步依赖 -->
    19. <dependency>
    20. <groupId>org.mybatis.spring.boot</groupId>
    21. <artifactId>mybatis-spring-boot-starter</artifactId>
    22. </dependency>
    23. <!-- mysql驱动 -->
    24. <dependency>
    25. <groupId>com.mysql</groupId>
    26. <artifactId>mysql-connector-j</artifactId>
    27. <scope>runtime</scope>
    28. </dependency>
    29. <!-- springboot单元测试 -->
    30. <dependency>
    31. <groupId>org.springframework.boot</groupId>
    32. <artifactId>spring-boot-starter-test</artifactId>
    33. <scope>test</scope>
    34. </dependency>
    35. <!-- PageHelper分页插件https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
    36. <dependency>
    37. <groupId>com.github.pagehelper</groupId>
    38. <artifactId>pagehelper-spring-boot-starter</artifactId>
    39. </dependency>
    40. <!--fastJSON-->
    41. <dependency>
    42. <groupId>com.alibaba</groupId>
    43. <artifactId>fastjson</artifactId>
    44. </dependency>
    45. <!--AOP-->
    46. <dependency>
    47. <groupId>org.springframework.boot</groupId>
    48. <artifactId>spring-boot-starter-aop</artifactId>
    49. </dependency>
    50. </dependencies>

    2、bocai-utils模块

    1. <dependencies>
    2. <!-- 2、 注释 junit -->
    3. <!--
    4. <dependency>
    5. <groupId>junit</groupId>
    6. <artifactId>junit</artifactId>
    7. <version>3.8.1</version>
    8. <scope>test</scope>
    9. </dependency>
    10. -->
    11. <!-- 3、加入依赖 -->
    12. <!-- web起步依赖 -->
    13. <dependency>
    14. <groupId>org.springframework.boot</groupId>
    15. <artifactId>spring-boot-starter-web</artifactId>
    16. </dependency>
    17. <!-- 阿里云OSS依赖-->
    18. <dependency>
    19. <groupId>com.aliyun.oss</groupId>
    20. <artifactId>aliyun-sdk-oss</artifactId>
    21. </dependency>
    22. <dependency>
    23. <groupId>javax.xml.bind</groupId>
    24. <artifactId>jaxb-api</artifactId>
    25. </dependency>
    26. <dependency>
    27. <groupId>javax.activation</groupId>
    28. <artifactId>activation</artifactId>
    29. </dependency>
    30. <!-- no more than 2.3.3-->
    31. <dependency>
    32. <groupId>org.glassfish.jaxb</groupId>
    33. <artifactId>jaxb-runtime</artifactId>
    34. </dependency>
    35. <!--JWT令牌-->
    36. <dependency>
    37. <groupId>io.jsonwebtoken</groupId>
    38. <artifactId>jjwt</artifactId>
    39. </dependency>
    40. </dependencies>

    六、打包

    1、确定代码都可执行,无错误

    2、bocai-parent加入标签

    如果你是创建模块时选择了父Parent,是自动生成的

    1. <!-- 8、 聚合 打包 这个是创建模块选择 父的时候自动创建的-->
    2. <modules>
    3. <module>../bocai-entity</module>
    4. <module>../bocai-utils</module>
    5. <module>../bocai-web-management</module>
    6. </modules>

    3、完整的bocai-parent的pom

    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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0</modelVersion>
    5. <parent>
    6. <groupId>org.springframework.boot</groupId>
    7. <artifactId>spring-boot-starter-parent</artifactId>
    8. <!-- 1、修改为2.7.5 -->
    9. <version>2.7.5</version>
    10. <relativePath/> <!-- lookup parent from repository -->
    11. </parent>
    12. <groupId>com.bocai</groupId>
    13. <artifactId>bocai-parent</artifactId>
    14. <version>0.0.1-SNAPSHOT</version>
    15. <!-- 2、新增设置打包模式为pom -->
    16. <packaging>pom</packaging>
    17. <!-- 8、 聚合 打包 这个是创建模块选择 父的时候自动创建的-->
    18. <modules>
    19. <module>../bocai-entity</module>
    20. <module>../bocai-utils</module>
    21. <module>../bocai-web-management</module>
    22. </modules>
    23. <!-- 3、注释 name与description -->
    24. <!--<name>bocai-parent</name>
    25. <description>bocai-parent</description>-->
    26. <properties>
    27. <java.version>1.8</java.version>
    28. <!-- 8、自定义属性 -->
    29. <lombok.version>1.18.24</lombok.version>
    30. <aliyun-sdk-oss.version>3.15.1</aliyun-sdk-oss.version>
    31. <jaxb-api.version>2.3.1</jaxb-api.version>
    32. <activation.version>1.1.1</activation.version>
    33. <jaxb-runtime.version>2.3.3</jaxb-runtime.version>
    34. <mybatis.version>2.3.1</mybatis.version>
    35. <mysql-connector-j.version>8.0.31</mysql-connector-j.version>
    36. <pagehelper.version>1.4.6</pagehelper.version>
    37. <fastjson.version>1.2.76</fastjson.version>
    38. <jjwt.version>0.9.0</jjwt.version>
    39. <!-- 无需配置,因为springboot已经版本控制了 -->
    40. <!--
    41. <spring-boot-starter-test.version>2.7.5</spring-boot-starter-test.version>
    42. <spring-boot-starter-aop.version>2.7.5</spring-boot-starter-aop.version>
    43. <spring-boot-starter-web.version>2.7.5</spring-boot-starter-web.version>
    44. -->
    45. </properties>
    46. <dependencies>
    47. <!-- 6、 加入的公共依赖 -->
    48. <!-- lombok -->
    49. <dependency>
    50. <groupId>org.projectlombok</groupId>
    51. <artifactId>lombok</artifactId>
    52. <version>${lombok.version}</version>
    53. </dependency>
    54. <!-- 4、注释以下依赖 -->
    55. <!--
    56. <dependency>
    57. <groupId>org.springframework.boot</groupId>
    58. <artifactId>spring-boot-starter</artifactId>
    59. </dependency>
    60. <dependency>
    61. <groupId>org.springframework.boot</groupId>
    62. <artifactId>spring-boot-starter-test</artifactId>
    63. <scope>test</scope>
    64. </dependency>
    65. -->
    66. </dependencies>
    67. <!-- 7、 版本锁定 -->
    68. <dependencyManagement>
    69. <dependencies>
    70. <!-- 阿里云OSS依赖-->
    71. <dependency>
    72. <groupId>com.aliyun.oss</groupId>
    73. <artifactId>aliyun-sdk-oss</artifactId>
    74. <version>${aliyun-sdk-oss.version}</version>
    75. </dependency>
    76. <dependency>
    77. <groupId>javax.xml.bind</groupId>
    78. <artifactId>jaxb-api</artifactId>
    79. <version>${jaxb-api.version}</version>
    80. </dependency>
    81. <dependency>
    82. <groupId>javax.activation</groupId>
    83. <artifactId>activation</artifactId>
    84. <version>${activation.version}</version>
    85. </dependency>
    86. <!-- no more than 2.3.3-->
    87. <dependency>
    88. <groupId>org.glassfish.jaxb</groupId>
    89. <artifactId>jaxb-runtime</artifactId>
    90. <version>${jaxb-runtime.version}</version>
    91. </dependency>
    92. <!--JWT令牌-->
    93. <dependency>
    94. <groupId>io.jsonwebtoken</groupId>
    95. <artifactId>jjwt</artifactId>
    96. <version>${jjwt.version}</version>
    97. </dependency>
    98. <!-- mybatis起步依赖 -->
    99. <dependency>
    100. <groupId>org.mybatis.spring.boot</groupId>
    101. <artifactId>mybatis-spring-boot-starter</artifactId>
    102. <version>${mybatis.version}</version>
    103. </dependency>
    104. <!-- mysql驱动 -->
    105. <dependency>
    106. <groupId>com.mysql</groupId>
    107. <artifactId>mysql-connector-j</artifactId>
    108. <scope>runtime</scope>
    109. <version>${mysql-connector-j.version}</version>
    110. </dependency>
    111. <!-- PageHelper分页插件https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
    112. <dependency>
    113. <groupId>com.github.pagehelper</groupId>
    114. <artifactId>pagehelper-spring-boot-starter</artifactId>
    115. <version>${pagehelper.version}</version>
    116. </dependency>
    117. <!--fastJSON-->
    118. <dependency>
    119. <groupId>com.alibaba</groupId>
    120. <artifactId>fastjson</artifactId>
    121. <version>${fastjson.version}</version>
    122. </dependency>
    123. <!-- 100、 无需配置,因为在springboot当中已经版本控制了 -->
    124. <!-- web起步依赖
    125. <dependency>
    126. <groupId>org.springframework.boot</groupId>
    127. <artifactId>spring-boot-starter-web</artifactId>
    128. <version>${spring-boot-starter-web.version}</version>
    129. </dependency>
    130. -->
    131. <!-- springboot单元测试
    132. <dependency>
    133. <groupId>org.springframework.boot</groupId>
    134. <artifactId>spring-boot-starter-test</artifactId>
    135. <scope>test</scope>
    136. <version>${spring-boot-starter-test.version}</version>
    137. </dependency>
    138. -->
    139. <!--AOP
    140. <dependency>
    141. <groupId>org.springframework.boot</groupId>
    142. <artifactId>spring-boot-starter-aop</artifactId>
    143. <version>${spring-boot-starter-aop.version}</version>
    144. </dependency>
    145. -->
    146. </dependencies>
    147. </dependencyManagement>
    148. <!-- 5、注释 build -->
    149. <!--
    150. <build>
    151. <plugins>
    152. <plugin>
    153. <groupId>org.springframework.boot</groupId>
    154. <artifactId>spring-boot-maven-plugin</artifactId>
    155. </plugin>
    156. </plugins>
    157. </build>
    158. -->
    159. </project>

    3、打包

    选择父bocai-parent  生命周期的package

    七、使用jar启动服务

    这里有个关键是bocai-web-management的pom需要build标签

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.springframework.boot</groupId>
    5. <artifactId>spring-boot-maven-plugin</artifactId>
    6. <configuration>
    7. <excludes>
    8. <exclude>
    9. <groupId>org.projectlombok</groupId>
    10. <artifactId>lombok</artifactId>
    11. </exclude>
    12. </excludes>
    13. </configuration>
    14. </plugin>
    15. </plugins>
    16. </build>

    1. #cmd窗口
    2. java -jar 打包的jar包

     

     

  • 相关阅读:
    企业怎么找包收录的媒体做推广,便宜又好用的软文发稿平台推荐
    软件开发原则
    【ELK日志收集系统】
    Qt Quick Layouts Overview
    【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?
    nvm 安装使用
    Codeforces Round 949 (Div. 2 ABCD) 视频讲解
    ASP.NET添加MVC控制器报错
    基于强化学习的节能路由(Matlab代码实现)
    网工内推 | 网络安全工程师,上市公司,13薪,食宿有补贴
  • 原文地址:https://blog.csdn.net/legend818/article/details/133930716