当前位置:   article > 正文

创建springboot +maven 多模块项目并打包

maven 多个项目spring启动项在父模块中,怎么给子模块打包

一、版本 :springboot 2.3.3

maven 3.6.1

1.项目结构如下,父模块是springboot-maven-multi ,子模块是user-dao、user-pojo、user-service、user-web。程序的启动类在user-web中。

up-606ade9e74f98da625aa0c93339019f7c1c.png

二 、创建项目

第一步、新建father项目,使用创建springboot的方式

up-1e55522b73d2a45e0896544db435d6f1169.png

如下图:输入Group、Artifact等信息,Type选择Maven Pom

up-1b3eef2ce9bb6ab3de5a0252c096c4ff464.png

然后一直点击Next,最后Finish即可。

最后项目生成后结构只有一个pom.xml文件,无src目录,如下图

up-b891f16925b4d399fbe224a4fabf906ddf1.png

第二步  新建user-domain、user-dao、user-service、user-web模块

如:新建user-domain模块

File -> New -Module -> Maven

up-306aef954abf75cc4ec1ca3d6682a5cdccd.png

up-08ae2883bad17379c9d94fefdc8ab822390.png

点击finish即可。

user-dao、user-service、user-web模块新建步骤也相同,只需修改模块名称即可。

第三步 编写 user-domain模块代码

  1. package com.lnjecit.domain;
  2. /**
  3. * @author lnj
  4. * createTime 2018-11-03 10:06
  5. **/
  6. public class User {
  7. private Long id;
  8. private String name;
  9. private String password;
  10. public Long getId() {
  11. return id;
  12. }
  13. public void setId(Long id) {
  14. this.id = id;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public String getPassword() {
  23. return password;
  24. }
  25. public void setPassword(String password) {
  26. this.password = password;
  27. }
  28. }

第四步 编写user-dao模块代码,

该模块依赖user-domain模块,所以要在该模块的pom文件中引入user-domain.

  1. package com.lnjecit.dao;
  2. import com.lnjecit.domain.User;
  3. import org.springframework.stereotype.Component;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. /**
  7. * @author lnj
  8. * createTime 2018-11-03 9:59
  9. **/
  10. @Component
  11. public class UserDao {
  12. public List<User> query() {
  13. List<User> list = new ArrayList<>();
  14. User user = new User();
  15. user.setId(1L);
  16. user.setName("lnj");
  17. user.setPassword("123456");
  18. list.add(user);
  19. return list;
  20. }
  21. }

第五步:编写user-service模块代码

创建UserService类,user-service模块依赖于user-dao和user-domain模块,所以需在pom.xml文件中引入user-dao和user-domain依赖

  1. package com.lnjecit.service;
  2. import com.lnjecit.dao.UserDao;
  3. import com.lnjecit.domain.User;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Service;
  6. import java.util.List;
  7. /**
  8. * @author lnj
  9. * createTime 2018-11-03 10:01
  10. **/
  11. @Service
  12. public class UserService {
  13. @Autowired
  14. UserDao userDao;
  15. public List<User> query() {
  16. return userDao.query();
  17. }
  18. }

第六步:编写user-web模块代码

创建UserController类,user-web模块依赖于user-service和user-domain模块,所以需在pom.xml文件中引入user-service和user-domain依赖

  1. package com.lnjecit.controller;
  2. import com.lnjecit.domain.User;
  3. import com.lnjecit.service.UserService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8. import java.util.List;
  9. /**
  10. * @author lnj
  11. * createTime 2018-11-03 10:12
  12. **/
  13. @RequestMapping("/user")
  14. @RestController
  15. public class UserController {
  16. @Autowired
  17. private UserService userService;
  18. @GetMapping("/list")
  19. public List<User> list() {
  20. return userService.query();
  21. }
  22. }

创建UserApplication启动类

  1. package com.lnjecit;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. /**
  5. * @author lnj
  6. * createTime 2018-11-03 10:15
  7. **/
  8. @SpringBootApplication
  9. public class UserApplication {
  10. public static void main(String[] args) {
  11. SpringApplication.run(UserApplication.class, args);
  12. }
  13. }

第七步:修改最外层pom.xml文件

  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. <packaging>pom</packaging>
  6. <modules>
  7. <module>user-service</module>
  8. <module>user-dao</module>
  9. <module>user-web</module>
  10. <module>user-pojo</module>
  11. </modules>
  12. <parent>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-parent</artifactId>
  15. <version>2.3.3.RELEASE</version>
  16. <relativePath/> <!-- lookup parent from repository -->
  17. </parent>
  18. <groupId>com.sunwei</groupId>
  19. <artifactId>father</artifactId>
  20. <version>0.0.1-SNAPSHOT</version>
  21. <name>springboot-maven-multi</name>
  22. <description>Demo project for Spring Boot</description>
  23. <properties>
  24. <java.version>1.8</java.version>
  25. </properties>
  26. <dependencies>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter</artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-web</artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-test</artifactId>
  38. <scope>test</scope>
  39. <exclusions>
  40. <exclusion>
  41. <groupId>org.junit.vintage</groupId>
  42. <artifactId>junit-vintage-engine</artifactId>
  43. </exclusion>
  44. </exclusions>
  45. </dependency>
  46. </dependencies>
  47. <build>
  48. <plugins>
  49. <plugin>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-maven-plugin</artifactId>
  52. <configuration><!-- 指定该Main Class为全局的唯一入口 -->
  53. <mainClass>com.sunwei.UserApplication</mainClass>
  54. <layout>ZIP</layout>
  55. </configuration>
  56. <executions>
  57. <execution>
  58. <goals>
  59. <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
  60. </goals>
  61. <!--可以生成不含依赖包的不可执行Jar包-->
  62. <!-- <configuration>-->
  63. <!-- <classifier>exec</classifier>-->
  64. <!-- </configuration>-->
  65. </execution>
  66. </executions>
  67. </plugin>
  68. </plugins>
  69. </build>
  70. </project>

第八步:启动user-web项目

运行 user-web模块中的 UserApplication类,启动成功

up-b0158bc5b9d30d9792c2afc266b9e84485b.png

第九步:打jar包

在根目录下使用maven打包。  clean--package

up-7b7ab8099d7000e86eb9ff7a2f1345f8b45.png

1.第一次打包不成功,报出错误提示:找不到com.sunwe.domain包。

解决方法:在user-domain、user-dao、user-service模块的pom文件中加上如下代码

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. <configuration>
  7. <classifier>exec</classifier>
  8. </configuration>
  9. </plugin>
  10. </plugins>
  11. </build>

2.再次使用maven clean-package 打包成功。

up-806251ef639c510ed4c5aae6dd66b6952b6.png

3.在jar包目录下启动jar包。

up-79c070fe878c23275b9eaaad4d4fc460bd1.png

参考文章https://www.cnblogs.com/zuidongfeng/p/9903501.html

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

闽ICP备14008679号