当前位置: 首页 > 编程笔记 >

SpringBoot+Maven 多模块项目的构建、运行、打包实战

段干高歌
2023-03-14
本文向大家介绍SpringBoot+Maven 多模块项目的构建、运行、打包实战,包括了SpringBoot+Maven 多模块项目的构建、运行、打包实战的使用技巧和注意事项,需要的朋友参考一下

本篇文章主要介绍了SpringBoot+Maven 多模块项目的构建、运行、打包,分享给大家,具体如下:

项目使用的工具:

  1. IntelliJ IDEA
  2. JDK 1.8
  3. apache-maven-3.3.9

项目的目录:

  1. 主项目 springboot-multi
  2. 子模块 entity、dao、service、web

一、使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi

二、删除项目中的src目录,把pom.xml中的项目打包方式改为pom,如下:

<groupId>com.example</groupId> 
<artifactId>springboot-multi</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<!-- 此处改为pom --> 
<packaging>pom</packaging> 

三、创建springboot-multi项目的子模块,在项目上右键单击,选择:new -> Module。

四、创建四个子模块后,删除子模块中 src/main/java、src/main/java下的所有文件(如果没有文件跳过此操作),只保留web子模块的SpringBoot的Application主启动类。

五、主项目pom.xml (注意<modules>标签是否指定了子模块)

<modelVersion>4.0.0</modelVersion>  
  <groupId>com.example</groupId> 
  <artifactId>springboot-multi</artifactId> 
  <version>0.0.1-SNAPSHOT</version> 
  <!-- 此处改为pom --> 
  <packaging>pom</packaging> 
 
  <name>springboot-multi</name> 
  <description>Demo project for Spring Boot</description> 
 
  <modules> 
    <module>web</module> 
    <module>service</module> 
    <module>dao</module> 
    <module>entity</module> 
  </modules> 
 
  <parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.10.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
  </parent> 
 
  <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
  </properties> 
 
  <dependencies> 
    <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
  </dependencies> 
 
  <!--指定使用maven打包--> 
  <build> 
    <plugins> 
      <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.1</version> 
        <configuration> 
          <source>${java.version}</source> 
          <target>${java.version}</target> 
        </configuration> 
      </plugin> 
 
      <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.19.1</version> 
        <configuration> 
          <skipTests>true</skipTests>  <!--默认关掉单元测试 --> 
        </configuration> 
      </plugin> 
    </plugins> 
  </build> 

六、web子模块pom.xml(依赖service、dao、entity子模块) 

<modelVersion>4.0.0</modelVersion>  
  <groupId>com.example</groupId> 
  <artifactId>web</artifactId> 
  <version>0.0.1-SNAPSHOT</version> 
  <packaging>jar</packaging> 
 
  <name>web</name> 
  <description>Demo project for Spring Boot</description> 
 
  <parent> 
    <groupId>com.example</groupId> 
    <artifactId>springboot-multi</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../pom.xml</relativePath> 
  </parent> 
 
  <dependencies> 
    <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>service</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>dao</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>entity</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
  </dependencies> 
 
  <!--spring boot打包的话需要指定一个唯一的入门--> 
  <build> 
    <plugins> 
      <plugin> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-maven-plugin</artifactId> 
        <configuration> 
          <!-- 指定该Main Class为全局的唯一入口 --> 
          <mainClass>com.example.WebApplication</mainClass> 
          <layout>ZIP</layout> 
        </configuration> 
        <executions> 
          <execution> 
            <goals> 
              <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中--> 
            </goals> 
          </execution> 
        </executions> 
      </plugin> 
    </plugins> 
  </build> 

七、service子模块pom.xml(依赖 dao 、entity子模块)

<modelVersion>4.0.0</modelVersion> 
 
  <groupId>com.example</groupId> 
  <artifactId>service</artifactId> 
  <version>0.0.1-SNAPSHOT</version> 
  <packaging>jar</packaging> 
 
  <name>service</name> 
  <description>Demo project for Spring Boot</description> 
 
  <parent> 
    <groupId>com.example</groupId> 
    <artifactId>springboot-multi</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../pom.xml</relativePath> 
  </parent> 
 
  <dependencies> 
    <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>dao</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>entity</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
  </dependencies> 

八、dao子模块pom.xml (依赖entity子模块) 

<modelVersion>4.0.0</modelVersion> 
 
<groupId>com.example</groupId> 
<artifactId>dao</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 
 
<name>dao</name> 
<description>Demo project for Spring Boot</description> 
 
<parent> 
  <groupId>com.example</groupId> 
  <artifactId>springboot-multi</artifactId> 
  <version>0.0.1-SNAPSHOT</version> 
  <relativePath>../pom.xml</relativePath> 
</parent> 
 
<dependencies> 
  <dependency> 
    <groupId>com.example</groupId> 
    <artifactId>entity</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
  </dependency> 
</dependencies> 

九、entity子模块

<modelVersion>4.0.0</modelVersion> 
 
<groupId>com.example</groupId> 
<artifactId>entity</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 
 
<name>entity</name> 
<description>Demo project for Spring Boot</description> 
 
  <parent> 
    <groupId>com.example</groupId> 
    <artifactId>springboot-multi</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../pom.xml</relativePath> 
  </parent> 

十、pom.xml文件中需要注意的就是:

  1. 主项目的modules标签指定的子模块是否正确
  2. 子模块之间的依赖
  3. 子模块的parent标签

十一、web子模块的Application启动类:

@RestController 
@SpringBootApplication 
public class WebApplication { 
 
  public static void main(String[] args) { 
    SpringApplication.run(WebApplication.class, args); 
  } 
 
  @RequestMapping(value = "/test",method = RequestMethod.GET) 
  public String test(){ 
    return "test success"; 
  } 
} 

十二、执行main方法启动项目,访问localhost:8080/test,出现如下页面表示项目搭建成功:

十三、项目打包命令: mvn clean package 或者 使用右边工具栏的图形化界面打包也可以:

十四、打包成功日志

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎,并将包作为可执行的JAR文件。是一个带有Spring Boot的多模块项目,该项目将有3个模块。这里是父模块pom。xml 这里是模块核心 这里是模块web: 从父根目录,我使用以下方法生成所有模块: 但问题是tdk-web-0.0.2-SNAPSHOT。jar不包含tdk-c

  • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

  • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

  • 父项目为demo-mybatis子模块为mybatis-dao、demo-service。demo-mybatis pom.xml如下: 4.0.0 pom mybatis-DAO Demo-service Demo-mybatis-app org.springframework.Boot spring-boot-starter-parent 2.3.2.release com.example D

  • 问题内容: 我有一个多模块Maven项目,其中有多个微服务作为模块,因此我的父母中列出了一些模块,如下所示: 这里是依赖项,因此我在下面列出了依赖项 : 当我在本地运行时,按预期方式在被调用之前,但是在詹金斯中,它正在尝试构建然后使构建失败说: 我是否需要运行其他作业或重新排序模块,从本地到Jenkins有什么不同?感谢对此的任何帮助。 问题答案: 众所周知,问题在于子模块之间的依赖关系失败,因为

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并