springboot-05-多模块结构项目构建与测试(详细图文教程)idea版(代码片段)

xpwi xpwi     2022-12-02     797

关键词:

Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版

百度很多博客都不详细,弄了半天才把 Spring Boot 多模块项目构建开发整的差不多,特地重新创建配置,记录一下,也分享给有需要的人

本篇也会非常详细的介绍涉及的基础知识点,更多都写在注释上了

先放成功截图:
(1)项目结构:
技术图片
(2)启动:
技术图片
(3)测试主子模块:
技术图片
(4)测试子模块依赖:
技术图片

第一步:创建父模块,子模块

(1)打开创建项目窗口,点击 Create New Project

技术图片

(2)填写
技术图片

(3)填写
技术图片

(4)Maven 自动导入
技术图片

(5)没有 iml 文件,请重新创建,请看截图:
技术图片

(6)在父项目上,右键新建模块
技术图片

(7)这里用 xpwi-main
技术图片
(8)填写

(提示:这个名字建议个上面的一致,不然项目名和文件夹名不一致哈)
技术图片

(9)依次类推,创建自己需要的子模块
(10)然后去创建包,示例:
技术图片

第二步:父 pom.xml 配置

请查看详细注释,根据自己的项目修改

注意:

  • 子模块那个是不需要配置的,由创建时自动生成
  • dependencyManagement 也在注释上讲解了
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!--基本信息-->
    <description>Spring Boot 多模块构建示例</description>
    <groupId>com.xpwi</groupId>
    <artifactId>first-springboot</artifactId>
    <!--父 pom 的 packing 必须为 pom,请核查-->
    <packaging>pom</packaging>
    <version>1.0.0</version>

    <!--指定整个项目的父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>

    <!--模块:这里声明多个子模块 -->
    <!--注意,这个不用手动自己去写,因为创建的时候是会自动生成的-->
    <modules>
        <module>xpwi-test</module>
        <module>xpwi-main</module>
        <module>xpwi-login</module>
    </modules>

    <!--属性变量配置-->
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!--加载依赖管理-->
    <!--注意:如果使用dependencyManagement,只是对版本进行管理,不会直接引入jar  -->
    <!--是为了在这里配置版本,为了让子模块pom或者本pom的直接dependencies不单独配置版本 -->
    <!--如果没有版本,会先到这里找版本号,以免版本冲突  -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.0.5.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--公共模块加载,非公共模块请一般放在子pom进行加载-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!--插件-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.1.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

第三步:子 pom.xml 配置

请查看详细注释,根据自己的项目修改

注意:

  • 父模块依赖
  • 子模块与子模块依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>first-springboot</artifactId>
        <groupId>com.xpwi</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>xpwi-main</artifactId>
    <dependencies>

        <!--这个已经移动到父 pom 了-->
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-web</artifactId>-->
        <!--</dependency>-->

        <!--现在是去加载自己创建的模块-->
        <!--就是加载子模块对子模块的依赖-->
        <dependency>
            <groupId>com.xpwi</groupId>
            <artifactId>xpwi-test</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>com.xpwi</groupId>
            <artifactId>xpwi-login</artifactId>
            <version>1.0.0</version>
        </dependency>

    </dependencies>


</project>

第四步:创建启动类,本模块测试类

(1)创建两个文件
技术图片

(2)启动类 App.java 源代码:

package com.xpwi.main;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * 描述:Spring Boot 多模块测试项目
 * @author Xiao Pengwei
 * @since  2019-03-25
 */

@SpringBootApplication
@RestController
//扫描 main,test 模块中的下的所有包
//在 pom 加载子模块依赖才可以骚包
@ComponentScan("com.xpwi.main","com.xpwi.test")
public class App 

    public static void main(String[] args) 
        //启动 Web 容器
        SpringApplication.run(App.class, args);
        System.out.println("[启动成功]"+new Date());
    

(3)MainController.java 文件源代码:

package com.xpwi.main.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 描述:本模块测试类
 * @author Xiao Pengwei
 * @since  2019-03-25
 */

@RestController
@RequestMapping("/main")
public class MainController 

    //请求映射,当请求 /main/test 时执行该方法
    @RequestMapping("/test")
    public String home() 
        return "Hello Main!";
    

第五步:子模块依赖测试类

(1)结构:
技术图片

(2)TestController 文件源代码:

package com.xpwi.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 描述:子模块依赖测试
 * @author Xiao Pengwei
 * @since  2019-03-25
 */

@RestController
@RequestMapping("test")
public class TestController 

    //请求映射,当请求 /home 时执行该方法
    @RequestMapping("/test")
    public String home() 
        return "Hello Test!";
    

第六步:启动与测试

(1)启动:
技术图片
(2)测试主子模块:
技术图片
(3)测试子模块依赖:
技术图片

自定义 banner

一键加技术朋友群

gradle构建多模块项目(转)(代码片段)

废话不多说,直接进入主题。1.创建项目首先创建项目,名称为test:mkdirtest&&cdtestgradleinit这时候的项目结构如下:?testtree.├──build.gradle├──gradle│  └──wrapper│  ├──gradle-wrapper.jar│  └─... 查看详情

为多模块项目构建 docker 镜像,将 jar 推送到类路径

】为多模块项目构建docker镜像,将jar推送到类路径【英文标题】:Buildingdockerimageformultimoduleprojectpushingjarstoclasspath【发布时间】:2021-09-0205:37:33【问题描述】:我正在尝试为具有多个模块的项目创建docker映像。需要以这样一种方... 查看详情

maven构建项目(多模块项目)

原文来自:http://blog.csdn.net/subuser/article/details/18988813。在eclipse下构建maven项目,该项目由多个子模块组成。1.创建一个父项目NEW-->project-->maven-->mavenProject,点击下一步,进入newmavenProject的Selectprojectnameandlocation界面, 查看详情

maven单独构建多模块项目中的单个模块

说明:1、可能存在的场景,多模块项目没有互相引用,那么此时可以单独构建单个项目,指定到子模块的pom.xml文件即可完成编译。2、如果多模块项目各自都引用了,那么单独编译子模块的pom.xml文件会直接报错,解决方法就是... 查看详情

maven多模块项目构建

...建将会变得很难控制。因此设计人员会将项目划分为多个模块,多个模块独立开发、构建,   最终通过依赖整合到一起。Maven的聚合特性能够把项目的各个模块集合在一起构建,而Maven的继承特性则能帮助抽取各模 查看详情

spring-boot构建多模块项目

...有一个介质来包含。1.创建一个Maven项目,可以创建一个springboot项目作为基本框架,并且需要在pom.xml中引入Web的支持。2.在介质Maven项目中创建module,一般分为三个module:api/service/web& 查看详情

多模块项目构建期间模块之间的 Maven 依赖关系解析

】多模块项目构建期间模块之间的Maven依赖关系解析【英文标题】:Mavendependencyresolutionbetweenmodulesduringamulti-moduleprojectbuild【发布时间】:2018-12-2812:30:58【问题描述】:我遇到了一些以前没有预料到的Maven行为。例如我们有一个多... 查看详情

maven项目构建基础知识(代码片段)

文章目录一、前言二、聚合与继承2.1maven多模块使用,父模块(modules使用,package为pom),子模块(parent使用)2.2继承2.2.1被继承项目与继承项目是父子目录关系2.2.2被继承项目与继承项目的目录结构不是父子关系2.3聚... 查看详情

maven项目构建基础知识(代码片段)

文章目录一、前言二、聚合与继承2.1maven多模块使用,父模块(modules使用,package为pom),子模块(parent使用)2.2继承2.2.1被继承项目与继承项目是父子目录关系2.2.2被继承项目与继承项目的目录结构不是父子关系2.3聚... 查看详情

定义将在 Maven 多项目构建中构建的模块列表

】定义将在Maven多项目构建中构建的模块列表【英文标题】:DefinemoduleslistwhichshallbebuiltinMavenmultiprojectbuild【发布时间】:2014-12-1307:12:15【问题描述】:我想使用Maven-pl选项来定义哪些特定模块应包含在反应器中。如果提供了模块... 查看详情

maven单独构建多模块项目中的单个模块(代码片段)

  说明:1、可能存在的场景,多模块项目没有互相引用,那么此时可以单独构建单个项目,指定到子模块的pom.xml文件即可完成编译。2、如果多模块项目各自都引用了,那么单独编译子模块的pom.xml文件会直接报错,解决... 查看详情

在多模块 Maven 项目中构建所有模块后,如何运行集成测试?

】在多模块Maven项目中构建所有模块后,如何运行集成测试?【英文标题】:HowcanIrunintegrationtestsafterbuildingallmodulesinamulti-moduleMavenproject?【发布时间】:2017-01-2911:25:37【问题描述】:我正在开发一个大型多模块Maven项目。每个模块... 查看详情

MAVEN:多模块项目,如何为构建添加不同的环境

】MAVEN:多模块项目,如何为构建添加不同的环境【英文标题】:MAVEN:Multi-moduleproject,Howtoadddifferentenvironmentsforbuild【发布时间】:2022-02-0304:56:33【问题描述】:我正在处理一个复杂的多模块项目,以从ant转移。我们想要实现的目... 查看详情

maven使用maven构建多模块项目

转载自:http://www.cnblogs.com/h--d/p/6001366.htmlMaven多模块项目  Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式... 查看详情

intellij构建多模块项目

1.新建sailfish总目录,2.新建maven项目,并将其手动移入sailfish,再用intellij打开该项目,<groupId>com.rainbow.sailfish</groupId><artifactId>rainbow-parent</artifactId>3.在sailfish上新建module: rainbow-web,&nbs 查看详情

如何在多模块 Gradle 项目中构建分发包?

】如何在多模块Gradle项目中构建分发包?【英文标题】:Howtobuilddistributionpackageinmulti-moduleGradleproject?【发布时间】:2019-10-0612:45:47【问题描述】:我看过这个帖子Gradlemultiprojectdistribution,但还是有些疑惑。我想创建以下项目布局... 查看详情

idea新建一个多maven模块工程(有图)(代码片段)

 对于一些大型的项目来说,将项目的各个模块理清并进行管理,便于后续项目的维护,使用maven管理是很方便的,它可以很好的构建模块来设计项目的整体结构,对一些小型的项目不建议使用1、新建父maven模块(idea版本为201... 查看详情

即使没有任何更改,Android 多模块 Gradle 构建也很慢

】即使没有任何更改,Android多模块Gradle构建也很慢【英文标题】:Androidmulti-moduleGradlebuildslowevenwithoutanychanges【发布时间】:2017-10-3013:44:08【问题描述】:我有一个包含多个模块的Android项目,即使我尝试在不更改任何内容的情况... 查看详情