目录

  • 前言
  • 假设的 maven 多模块项目
    • 模块关系1
    • 模块关系2
    • 模块关系3
    • 模块关系4
  • 示例:模块关系1
    • 1,my-parent1/pom.xml 文件
    • 2,my-parent1/my-app1/pom.xml 文件
    • 3,执行 mvn spring-boot:run
  • 示例:模块关系2
    • 1,my-parent2/pom.xml 文件
    • 2,my-parent2/my-app2/pom.xml 文件
    • 3,执行 mvn spring-boot:run
  • 示例:模块关系3
    • 1,my-parent3/pom.xml 文件
    • 2,my-parent3/my-app3/pom.xml 文件
    • 3,执行 mvn spring-boot:run
  • 示例:模块关系4
    • 1,my-parent4/pom.xml 文件
    • 2,my-parent4/my-app4/pom.xml 文件
    • 3,执行 mvn spring-boot:run
  • 参考

前言

  • springboot 2.0.0.RELEASE
  • maven 3.5.0
  • maven 多模块项目关系

经过一段时间的验证,发现有不妥之处,再次编辑修正。

假设的 maven 多模块项目

假设多模块项目的目录结构如下:

my-parent
├─ my-domain
├─ my-service
└─ my-app

该项目可能具备以下集中关系。

模块关系1

同时具备继承关系和聚合关系。

my-parent1 <<< 无父项目
├─ my-domain
├─ my-service
└─ my-app1 <<< 父项目为 my-parent 的 Spring Boot project

模块关系2

仅具备聚合关系,不具备继承关系。

my-parent2 <<< 无父项目
├─ my-domain
├─ my-service
└─ my-app2 <<< 父项目为 spring-boot-starter-parent 的 Spring Boot project

模块关系3

同时具备继承关系和聚合关系。

my-parent3 <<< 父项目为 spring-boot-starter-parent
├─ my-domain
├─ my-service
└─ my-app3 <<< 父项目为 my-parent 的 Spring Boot project

模块关系4

仅具备聚合关系,不具备继承关系。

my-parent4 <<< 父项目为 spring-boot-starter-parent
├─ my-domain
├─ my-service
└─ my-app4 <<< 父项目为 spring-boot-starter-parent 的 Spring Boot project

该如何在my-app上执行mvn spring-boot:run

示例:模块关系1

1,my-parent1/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>test</groupId><artifactId>my-parent1</artifactId><version>1.0</version><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><maven-compiler-plugin.version>3.1</maven-compiler-plugin.version></properties><modules><module>my-app1</module></modules><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build>
</project>

2,my-parent1/my-app1/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>test</groupId><artifactId>my-parent1</artifactId><version>1.0</version></parent><artifactId>my-app1</artifactId><properties></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.0.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
  • 与其它集中关系相比,这里多了个 dependencyManagement

3,执行 mvn spring-boot:run

在my-parent1目录执行如下命令:

shell> mvn spring-boot:run -pl my-app1

或者:

shell> mvn spring-boot:run -pl test:my-app1
  • test 是 groupId
  • my-app1 是 artifactId

示例:模块关系2

1,my-parent2/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>test</groupId><artifactId>my-parent2</artifactId><version>1.0</version><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><maven-compiler-plugin.version>3.1</maven-compiler-plugin.version></properties><modules><module>my-app2</module></modules><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build></project>

2,my-parent2/my-app2/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>test</groupId><artifactId>my-app2</artifactId><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</artifactId></dependency></dependencies><build></build></project>

3,执行 mvn spring-boot:run

在my-parent1目录执行如下命令:

shell> mvn spring-boot:run -pl my-app2

或者:

shell> mvn spring-boot:run -pl test:my-app2
  • test 是 groupId
  • my-app2 是 artifactId

示例:模块关系3

1,my-parent3/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>test</groupId><artifactId>my-parent3</artifactId><version>1.0</version><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><maven-compiler-plugin.version>3.1</maven-compiler-plugin.version></properties><modules><module>my-app3</module></modules><build></build></project>

2,my-parent3/my-app3/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>test</groupId><artifactId>my-parent3</artifactId><version>1.0</version></parent><artifactId>my-app3</artifactId><properties></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies><build></build></project>

3,执行 mvn spring-boot:run

在my-parent1目录执行如下命令:

shell> mvn spring-boot:run -pl my-app3

或者:

shell> mvn spring-boot:run -pl test:my-app3
  • test 是 groupId
  • my-app3 是 artifactId

示例:模块关系4

1,my-parent4/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>test</groupId><artifactId>my-parent4</artifactId><version>1.0</version><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><modules><module>my-app4</module></modules><build></build></project>

2,my-parent4/my-app4/pom.xml 文件

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>test</groupId><artifactId>my-app4</artifactId><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</artifactId></dependency></dependencies><build></build>
</project>

3,执行 mvn spring-boot:run

在my-parent1目录执行如下命令:

shell> mvn spring-boot:run -pl my-app4

或者:

shell> mvn spring-boot:run -pl test:my-app4
  • test 是 groupId
  • my-app4 是 artifactId

参考

https://stackoverflow.com/questions/41092200/run-mvn-spring-bootrun-from-parent-module

【sprinb-boot】maven 多模块项目:单独 spring-boot:run 某个模块相关推荐

  1. springboot毕设项目基于Spring Boot的智慧天气管理系统84z99(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目基于Spring Boot的智慧天气管理系统84z99(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8. ...

  2. Maven工具管理下的Spring Boot连接Oracle数据库教程

    Maven工具管理下的Spring Boot连接Oracle数据库教程 一.系统环境 二.操作教程 1.明确Oracle版本 2.找到合适的jar包 3.将jar包配置到Maven本地库中 4.在Ec ...

  3. Maven中的profile和spring boot中的profile进行结合

    2019独角兽企业重金招聘Python工程师标准>>> 有一些应用,采用了spring boot和spring boot profile.然后想把maven 中的profile和sp ...

  4. Spring Boot基础学习笔记02:Spring Boot项目单元测试、热部署与原理分析

    文章目录 零.学习目标 1.掌握Spring Boot单元测试实现 2.掌握Spring Boot热部署实现 3.熟悉Spring Boot基本原理 一.Spring Boot单元测试 (一)Spri ...

  5. Spring Boot 3.0.0-M1 Reference Documentation(Spring Boot中文参考文档) 9-16

    9. 数据 Spring Boot与多个数据技术集成,包括SQL和NoSQL. 9.1. SQL数据库 Spring Framework提供扩展支持用于与SQL数据工作,从使用JdbcTemplate ...

  6. boot入门思想 spring_什么是Spring boot?Spring Boot快速入门以及Spring Boot实例教程

    转自:http://www.jianshu.com/p/d24bceea7665 简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候, ...

  7. Spring Boot 2.0:Docker Compose + Spring Boot + Nginx + Mysql 实践

    Spring Boot 2.0:Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中最常 ...

  8. Spring Boot基础学习笔记17:Spring Boot默认缓存

    文章目录 零.学习目标 一.缓存概述 (一)引入缓存管理的重要性 (二)Spring Boot的缓存管理 二.Spring Boot默认缓存 (一)数据准备 (二)创建Spring Boot项目 - ...

  9. Spring Boot基础学习笔记06:Spring Boot整合MyBatis

    文章目录 零.学习目标 1.了解Spring Boot数据访问概述 2.掌握使用注解的方式整合MyBatis 3.掌握使用配置文件的方式整合MyBatis 一.Spring Boot数据访问概述 二. ...

  10. Spring Boot学习总结(15)——Spring Boot优缺点再总结

    一.前言: 了解 Spring Boot 必须先说说 Spring 框架!在 Java 后端框架繁荣的今天,Spring 框架无疑是最最火热,也是必不可少的开源框架,更是稳坐 Java 后端框架的龙头 ...

最新文章

  1. ICCV2021论文全汇总!附下载链接
  2. kd树的根节点_kd树总结
  3. kalilinux安装qt_Kali Linux安装搜狗输入法(只需5步)
  4. Cordova创建你的第一个App
  5. 基于EasyDarwin实现幼儿园监控类项目
  6. arraylist如何检测某一元素是否为空_我们应该如何理解Java集合框架的关键知识点?...
  7. [CLR团队公告]CLR基础研究团队,邀请您的加入
  8. [PyTorch] 安装
  9. 2017级C语言大作业 - 密室逃生
  10. Bootstrap学习之三:使用排版
  11. Web渗透测试实战(Metasploit5.0) 一
  12. Java小程序之你画我猜
  13. 201671030110词频统计软件项目报告
  14. CENTOS7开机自启动脚本
  15. 【方向盘】2021年JVM生态报告:Java 11使用率超Java 8
  16. 了解一下 Technorati 的后台数据库架构
  17. dcos -1.7 都有哪些服务
  18. 拉取 gcr.io 镜像,如 Kubernetes,istio 等
  19. 学生成绩管理系统(xhh)
  20. XAG一键并轨XRP媒体报道

热门文章

  1. [Flink]Flink1.3 Stream指南六 事件时间与处理时间
  2. 【mysql学习】疑问点记录
  3. ASP.NET-FineUI开发实践-9(四)
  4. http协议下:为什么请求与响应会做到准确误的对应。不会出现请求与响应的错乱...
  5. C# API强制关机、重启以及注销计算机
  6. DotnetSpider (二) Downloader的设置 Request自定义数据字典
  7. webapi 获取请求参数
  8. EasyUI combobox
  9. C# HttpWebRequest 方式提交数据,参数为普通键值对
  10. repeater 的解释说明 用法