SpringBoot创建maven多模块项目

举报
西魏陶渊明 发表于 2022/09/25 06:04:54 2022/09/25
【摘要】 SpringBoot创建maven多模块项目(实战) 工作中一直都是一个人奋战一人一个项目,使用maven管理,看这个也挺好,但是总感觉没有充分发挥maven的功能,于是研究了一下这个,网上关于这个的文章很多,虽然不是很好,但我从中收获了很多,在这集百家所长,写一份实战记录,大家跟着我一块做吧! 声明:构建多...

SpringBoot创建maven多模块项目(实战)

工作中一直都是一个人奋战一人一个项目,使用maven管理,看这个也挺好,但是总感觉没有充分发挥maven的功能,于是研究了一下这个,网上关于这个的文章很多,虽然不是很好,但我从中收获了很多,在这集百家所长,写一份实战记录,大家跟着我一块做吧!

声明:构建多模块不是最难的,难点是如果把多模块打包成一个执行jar。
SpringBoot官方推崇的是富jar,也就是jar文件启动项目,所以如果在这里打war包我不具体介绍,如果需要的朋友可以给我留言,我回复。

建议clone项目后,在看教程(有不足的地方希望大家保函,指出来,我们一起学习改进)

github:https://github.com/lxchinesszz/multi-boluome.git

构建工程

  • 1.首先第一步,在github上创建一个公共项目项目名 multi-boluome

    1.%E5%88%9B%E5%BB%BA%E4%BB%93%E7%AE%A1.png
  • 2.把仓库同步到本地,使用Intellij idea打开,把普通项目转换为maven项目【右键:Add Frameworks Support】

    2.%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E5%85%8B%E9%9A%86%E9%A1%B9%E7%9B%AE.png
    转换为maven项目
    转换为maven项目
  • 3.删除除了pom文件之外的文件也就是src删除

    删除前
    删除前
  • 4.然后新建File->New->module以此创建(此时会看到pom文件的变化)

    • web
    • dao
    • domain
    • service
    5.%E5%90%8E%E7%9B%AE%E5%BD%95.png

==提示:一定要把外面的pom文件中的<packaging>pom</packaging>==

  • 5.引入SpringBoot依赖 这个我在外面写的(这个根据个人)

  
  1. 外面的pom文件内容
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <project xmlns="http://maven.apache.org/POM/4.0.0"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6. <modelVersion>4.0.0</modelVersion>
  7. <groupId>blm.server</groupId>
  8. <artifactId>multi-boluome</artifactId>
  9. <packaging>pom</packaging>
  10. <version>1.0-SNAPSHOT</version>
  11. <modules>
  12. <module>web</module>
  13. <module>service</module>
  14. <module>dao</module>
  15. <module>domain</module>
  16. </modules>
  17. <parent>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-parent</artifactId>
  20. <version>1.4.3.RELEASE</version>
  21. <relativePath/> <!-- lookup parent from repository -->
  22. </parent>
  23. <properties>
  24. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  25. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  26. <java.version>1.8</java.version>
  27. <kotlin.version>1.0.6</kotlin.version>
  28. </properties>
  29. <dependencies>
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-starter-aop</artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-data-mongodb</artifactId>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-starter-data-redis</artifactId>
  41. </dependency>
  42. <dependency>
  43. <groupId>org.springframework.boot</groupId>
  44. <artifactId>spring-boot-starter-freemarker</artifactId>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework.boot</groupId>
  48. <artifactId>spring-boot-starter-web</artifactId>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework.boot</groupId>
  52. <artifactId>spring-boot-starter-test</artifactId>
  53. <scope>test</scope>
  54. </dependency>
  55. <dependency>
  56. <groupId>junit</groupId>
  57. <artifactId>junit</artifactId>
  58. <version>4.12</version>
  59. </dependency>
  60. <!--引入mock框架-->
  61. <dependency>
  62. <groupId>org.mockito</groupId>
  63. <artifactId>mockito-core</artifactId>
  64. <version>1.10.19</version>
  65. </dependency>
  66. <!--rabbitmq-->
  67. <dependency>
  68. <groupId>org.springframework.boot</groupId>
  69. <artifactId>spring-boot-starter-amqp</artifactId>
  70. </dependency>
  71. <dependency>
  72. <groupId>com.google.code.gson</groupId>
  73. <artifactId>gson</artifactId>
  74. <version>2.2.4</version>
  75. </dependency>
  76. </dependencies>
  77. <build>
  78. <plugins>
  79. <plugin>
  80. <!-- The plugin rewrites your manifest -->
  81. <groupId>org.springframework.boot</groupId>
  82. <artifactId>spring-boot-maven-plugin</artifactId>
  83. <version>1.3.0.RELEASE</version>
  84. <configuration><!-- 指定该Main Class为全局的唯一入口 -->
  85. <mainClass>iflyer.IflyerApplication</mainClass>
  86. <layout>ZIP</layout>
  87. </configuration>
  88. <executions>
  89. <execution>
  90. <goals>
  91. <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
  92. </goals>
  93. <!--可以生成不含依赖包的不可执行Jar包-->
  94. <!-- configuration>
  95. <classifier>exec</classifier>
  96. </configuration> -->
  97. </execution>
  98. </executions>
  99. </plugin>
  100. </plugins>
  101. </build>
  102. </project>
  • 6.开始编写domain层(这里我用mongodb数据库)

  • 7.dao层我要用到数据库,所以在resource中添加配置信息

  • 8.service层中我有用到freemarker的模板引擎,所以添加配置信息

  • 9.web层编写启动类,main方法,main方法要放到目录外层,根据约定哦!

  • 10.每个层及都有自己的依赖


  
  1. ```
  2. eg:
  3. dao层依赖domain
  4. service依赖dao和domain
  5. web层依赖service、dao、domain
  6. 这个关系层次一定要告诉,编辑器,如下设置
  7. 右键:Open Module Settings打开
  8. ```
  9. idea修改依赖
  10. ![](https://raw.githubusercontent.com/lxchinesszz/multi-boluome/master/web/src/main/resources/static/image/6.web%E5%B1%82%E4%BE%9D%E8%B5%963%E4%B8%AA.png)
  • 11.run一下启动类吧!工程可以启动了

如果出现一下错误

Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules
说明依赖关系错了,继续看第10步骤吧。

打包发布jar文件

  • 1.在启动类中修改pom文件(也就是web层的)

    
        
    1. <build>
    2. <!-- 为jar包取名 -->
    3. <finalName>blm-start</finalName>
    4. <plugins>
    5. <plugin>
    6. <groupId>org.springframework.boot</groupId>
    7. <artifactId>spring-boot-maven-plugin</artifactId>
    8. <version>1.3.0.RELEASE</version>
    9. </plugin>
    10. </plugins>
    11. </build>
  • 2.在外层pom中构建插件

    
        
    1. <build>
    2. <plugins>
    3. <plugin>
    4. <!-- The plugin rewrites your manifest -->
    5. <groupId>org.springframework.boot</groupId>
    6. <artifactId>spring-boot-maven-plugin</artifactId>
    7. <version>1.3.0.RELEASE</version>
    8. <configuration><!-- 指定该Main Class为全局的唯一入口 -->
    9. <mainClass>com.Application</mainClass>
    10. <layout>ZIP</layout>
    11. </configuration>
    12. <executions>
    13. <execution>
    14. <goals>
    15. <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
    16. </goals>
    17. <!--可以生成不含依赖包的不可执行Jar包-->
    18. <!-- configuration>
    19. <classifier>exec</classifier>
    20. </configuration> -->
    21. </execution>
    22. </executions>
    23. </plugin>
    24. </plugins>
    25. </build>
  • 3.打包吧,mvn package —Dmaven.test.skip=true 跳过测试

  
  1. [INFO] multi-boluome ...................................... SUCCESS [ 1.707 s]
  2. [INFO] domain ............................................. SUCCESS [ 2.463 s]
  3. [INFO] dao ................................................ SUCCESS [ 0.592 s]
  4. [INFO] service ............................................ SUCCESS [ 0.606 s]
  5. [INFO] web ................................................ SUCCESS [ 1.135 s]
  6. [INFO] ------------------------------------------------------------------------
  7. [INFO] BUILD SUCCESS
  8. [INFO] ------------------------------------------------------------------------
  9. [INFO] Total time: 7.290 s
  10. [INFO] Finished at: 2017-01-20T17:05:14+08:00
  11. [INFO] Final Memory: 42M/265M
  12. [INFO] ------------------------------------------------------------------------
  13. KK-MINI:multi-boluome liuxin$
  14. INFO] Building jar: /Users/liuxin/git/模仿项目/multi-boluome/web/target/blm-start.jar
  15. 构建文件在这个目录下

very Good!开始飞吧

==提醒:所有模块里面的父节点都是一样的哦,不然会报错 unknow.version==

WARNING] 'parent.relativePath' of POM blm.server:domain:[unknown-version] 类似

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/102425248

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。