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 或者 使用右边工具栏的图形化界面打包也可以:

十四、打包成功日志:

原文地址:https://www.cnblogs.com/Hackerman/p/11769620.html

时间: 2024-10-07 08:27:23

SpringBoot+Maven 多模块项目的构建、运行、打包的相关文章

SpringBoot创建maven多模块项目

SpringBoot创建maven多模块项目 项目结构 该项目名称为springboot-maven-multi,由springboot-maven-multi.user-dao.user-domain.user-service.user-web个模块组成,其中springboot-maven-multi模块是其他模块的父模块. 第一步:新建项目springboot-maven-multi File -> New -> Project -> Spring Initializr 如下图:输

Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块

一.Jenkins构建Maven多模块项目时,单独编译子模块 配置: 1.Root POM指向父pom.xml 2.Goals and options指定构建模块的参数:mvn -pl jsoft-web -am clean package,单独构建jsoft-web项目以及它所依赖的其它项目.参考:http://www.cnblogs.com/EasonJim/p/8350560.html 二.通过上面的操作之后确实能单独构建了,但可能会同时触发Jenkins上的其它模块的项目,可以通过屏蔽下

maven多模块项目构建

描述 一个大的企业级项目通常跨越了数十万行代码,牵涉了数十或数百软件人员的努力.如果开发者在同一个项目下开   发,那么项目的管理.构建将会变得很难控制.因此设计人员会将项目划分为多个模块,多个模块独立开发.构建,    最终通过依赖整合到一起.Maven的聚合特性能够把项目的各个模块集合在一起构建,而Maven的继承特性则能帮助抽取各模块相同的依赖和     插件配置,在简化POM的同时,还能促进各个模块配置的一致性. 聚合 通过一个POM模块来统一构建多个模块,Maven可以根据依赖关系计算

maven多模块项目,多web合并项目使用心得

Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow 此文章适合maven初学者或想接触maven的用户,讲的只是皮毛,高手请自觉略过. 最近一直在搞fixflow5.2的升级工作,以前只知道maven好用,但是一直没机会接触,这次由于工作需要,终于有空看下maven了. 由于以前项目使用linksource来管理项目结构,用tomcat来调试,习惯了,所以虽然决定用maven,但是还是习惯用tomcat来调试.所以就一直在网上搜

Spring Boot 项目实战(一)Maven 多模块项目搭建

Maven父项目 以SpringBoot项目为例https://blog.csdn.net/weixin_30606669/article/details/99478544 Maven 多模块父子工程 (含Spring Boot示例)https://www.cnblogs.com/meitanzai/p/10945085.html https://www.cnblogs.com/orzlin/p/10330163.html 一.前言 最近公司项目准备开始重构,框架选定为 Spring Boot

Maven 多模块项目 实现

先上git的项目地址: http://git.oschina.net/alexgaoyh/MutiModule-parent 最近在学习使用Maven,在学习使用Maven多模块项目的过程中,打算整合spring mybatis进行项目练手,模块的划分刚开始很纠结,是根据业务划分还是根据模块划分,最终觉得MVC的思想有他存在的道理,在多模块划分的过程中,使用了domain persist service controller的划分方式(entity dao service controller)

利用springboot创建多模块项目

本文旨在用最通俗的语言讲述最枯燥的基本知识 最近要对一个不大不小的项目进行重构,用spring觉得太过于繁琐,用cloud又有觉得过于庞大,维护的人手不够:权衡之下,最终选了springboot作为架子,但是因为项目涉及的业务模块较多,各个模块之间的业务交流不是很多,相对独立,因此想着把项目做成多模块的形式,模块之间可以独立部署,又可以互相调用,满足需求,故而花了点时间,搭了个springboot多模块的架子. 文章提纲: 多模块的创建 关键配置 温馨提示 1. 根模块的创建 springboo

eclipse导入SVN上的Maven多模块项目

一.SVN上Maven多模块项目结构 使用eclipse导入SVN上的Maven多模块项目 Maven多模块项目所在SVN目录 二.eclipse通过SVN导入到工作空间 工作空间位于F:/HPCWorkspace 2.1 File->Import,选择从SVN检出项目下载 2.2 选择/新建SVN资源库位置 如果资源库还没创建好,选择创建新的资源库位置,如果已经创建好资源库了,那么选择使用现有的资源库位置下载 不存在的话新建 存在的话,选择已经存在的资源库  2.3 选择要从SVN检出的文件夹

Maven多模块项目搭建

最近一直在思考如何能够更好的重用代码.减少重复劳动,之前有一篇文章通过导入JAR包的形式,可以重用部分形如util类的方法,但是这样的话,管理起来jar包,特别是协同工作,多项目情况下,管理JAR会出现某些版本不统一的情况, 刚好最近在看Maven相关的资料,突然发现使用Maven是一个很好地方法. 2. 1: 本地通过创建Nexus私服仓库,可以将相关的项目打包jar上传到第三方仓库里面进行依赖,每次版本迭代,直接从Nexus私服仓库里面取出来最新的jar包即可.同时如果存在多项目依赖相同的j