springboot多模块打包部署

£神魔★判官ぃ 2023-03-13 13:08 174阅读 0赞

项目结构:父工程parent,子模块 entity ,dao ,service ,web

dao依赖entity

service依赖dao,entity

web依赖 service、dao、entity

创建springboot父工程parent

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHRlcnNz_size_16_color_FFFFFF_t_70

创建后把src文件夹删除,然后创建模块entity,dao,service,web,创建完后项目结构如下

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHRlcnNz_size_16_color_FFFFFF_t_70 1

父工程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. <version>2.1.7.RELEASE</version>
  9. <relativePath/>
  10. </parent>
  11. <groupId>com.cncbox</groupId>
  12. <artifactId>share-parent</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>share-parent</name>
  15. <!-- 此处改为pom -->
  16. <packaging>pom</packaging>
  17. <description>Demo project for Spring Boot</description>
  18. <!-- 添加子模块 -->
  19. <modules>
  20. <module>web</module>
  21. <module>service</module>
  22. <module>dao</module>
  23. <module>entity</module>
  24. </modules>
  25. <properties>
  26. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  27. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  28. <java.version>1.8</java.version>
  29. </properties>
  30. <dependencies>
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-web</artifactId>
  34. </dependency>
  35. </dependencies>
  36. <build>
  37. <plugins>
  38. <plugin>
  39. <groupId>org.apache.maven.plugins</groupId>
  40. <artifactId>maven-compiler-plugin</artifactId>
  41. <version>3.1</version>
  42. <configuration>
  43. <source>${java.version}</source>
  44. <target>${java.version}</target>
  45. </configuration>
  46. </plugin>
  47. <plugin>
  48. <groupId>org.apache.maven.plugins</groupId>
  49. <artifactId>maven-surefire-plugin</artifactId>
  50. <version>2.18.1</version>
  51. <configuration>
  52. <skipTests>true</skipTests> <!--默认关掉单元测试 -->
  53. </configuration>
  54. </plugin>
  55. </plugins>
  56. </build>
  57. </project>

entity模块pom如下,无需build

  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>com.cncbox</groupId>
  7. <artifactId>share-parent</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.cncbox</groupId>
  12. <artifactId>entity</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>entity</name>
  15. <packaging>jar</packaging>
  16. <description>Demo project for Spring Boot</description>
  17. </project>

dao模块pom如下,无需build

  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>com.cncbox</groupId>
  7. <artifactId>share-parent</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.cncbox</groupId>
  12. <artifactId>dao</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>dao</name>
  15. <packaging>jar</packaging>
  16. <description>Demo project for Spring Boot</description>
  17. <properties>
  18. <java.version>1.8</java.version>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>com.cncbox</groupId>
  23. <artifactId>entity</artifactId>
  24. <version>0.0.1-SNAPSHOT</version>
  25. </dependency>
  26. </dependencies>
  27. </project>

server模块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>com.cncbox</groupId>
  7. <artifactId>share-parent</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.cncbox</groupId>
  12. <artifactId>service</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>service</name>
  15. <packaging>jar</packaging>
  16. <description>Demo project for Spring Boot</description>
  17. <properties>
  18. <java.version>1.8</java.version>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>com.cncbox</groupId>
  23. <artifactId>dao</artifactId>
  24. <version>0.0.1-SNAPSHOT</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>com.cncbox</groupId>
  28. <artifactId>entity</artifactId>
  29. <version>0.0.1-SNAPSHOT</version>
  30. </dependency>
  31. </dependencies>
  32. </project>

web模块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>com.cncbox</groupId>
  7. <artifactId>share-parent</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.cncbox</groupId>
  12. <artifactId>web</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>web</name>
  15. <packaging>jar</packaging>
  16. <description>Demo project for Spring Boot</description>
  17. <properties>
  18. <java.version>1.8</java.version>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>com.cncbox</groupId>
  23. <artifactId>service</artifactId>
  24. <version>0.0.1-SNAPSHOT</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>com.cncbox</groupId>
  28. <artifactId>dao</artifactId>
  29. <version>0.0.1-SNAPSHOT</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>com.cncbox</groupId>
  33. <artifactId>entity</artifactId>
  34. <version>0.0.1-SNAPSHOT</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-starter</artifactId>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.springframework.boot</groupId>
  42. <artifactId>spring-boot-starter-test</artifactId>
  43. <scope>test</scope>
  44. <exclusions>
  45. <exclusion>
  46. <groupId>org.junit.vintage</groupId>
  47. <artifactId>junit-vintage-engine</artifactId>
  48. </exclusion>
  49. </exclusions>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.springframework</groupId>
  53. <artifactId>spring-web</artifactId>
  54. <version>5.1.9.RELEASE</version>
  55. </dependency>
  56. </dependencies>
  57. <!--spring boot打包的话需要指定一个唯一的入门-->
  58. <build>
  59. <plugins>
  60. <plugin>
  61. <groupId>org.springframework.boot</groupId>
  62. <artifactId>spring-boot-maven-plugin</artifactId>
  63. <configuration>
  64. <!-- 指定该Main Class为全局的唯一入口 -->
  65. <mainClass>com.cncbox.web.WebApplication</mainClass>
  66. <layout>ZIP</layout>
  67. </configuration>
  68. <executions>
  69. <execution>
  70. <goals>
  71. <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
  72. </goals>
  73. </execution>
  74. </executions>
  75. </plugin>
  76. </plugins>
  77. </build>
  78. </project>

在entity模块创建实体类

  1. package com.cncbox.entity.pojo;
  2. public class User {
  3. private Integer id;
  4. private String name;
  5. private String age;
  6. private String sex;
  7. public User(Integer id, String name, String age, String sex) {
  8. this.id = id;
  9. this.name = name;
  10. this.age = age;
  11. this.sex = sex;
  12. }
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public String getAge() {
  26. return age;
  27. }
  28. public void setAge(String age) {
  29. this.age = age;
  30. }
  31. public String getSex() {
  32. return sex;
  33. }
  34. public void setSex(String sex) {
  35. this.sex = sex;
  36. }
  37. }

在web模块编写测试类

  1. package com.cncbox.web;
  2. import com.cncbox.entity.pojo.User;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. @RestController
  8. @SpringBootApplication
  9. public class WebApplication {
  10. public static void main(String[] args) {
  11. SpringApplication.run(WebApplication.class, args);
  12. }
  13. @GetMapping(value = "/test")
  14. public User test(){
  15. User user=new User(1,"汪胜","25","男");
  16. return user;
  17. }
  18. }

点击parent项目下的Lifecycle下的package打包

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHRlcnNz_size_16_color_FFFFFF_t_70 2

打包成功后,会在web模块的target文件夹里面生成jar。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHRlcnNz_size_16_color_FFFFFF_t_70 3

将该jar复制出来,重命名web.jar,打开命令窗口输入 jar -jar web.jar启动

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHRlcnNz_size_16_color_FFFFFF_t_70 4

浏览器访问http://localhost:8080/test ,依赖的实体类已经加载到web.jar里面了,实际应用dao,service也会加载,这里只举例entity.

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHRlcnNz_size_16_color_FFFFFF_t_70 5

发表评论

表情:
评论列表 (有 0 条评论,174人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springboot模块项目打包

    springboot多模块项目打包 今天在项目开发中,项目经理说实现以下APP和web端单独打包功能实现。因为app和web端是单独的modules,这样的话,app的代