日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

maven多模块合并打包_Spring Boot 多模块项目实践(附打包方法)

發布時間:2024/10/8 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven多模块合并打包_Spring Boot 多模块项目实践(附打包方法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 一、創建聚合父工程
  • 二、創建子模塊(module)
  • 三、編寫子模塊代碼
  • 三、運行項目
  • 四、運維部署(多模塊打包)
    • 1. 添加打包插件
    • 2. 打包工程
    • 3. 啟動項目

  • 《Java 2019 超神之路》
  • 《Dubbo 實現原理與源碼解析 —— 精品合集》
  • 《Spring 實現原理與源碼解析 —— 精品合集》
  • 《MyBatis 實現原理與源碼解析 —— 精品合集》
  • 《Spring MVC 實現原理與源碼解析 —— 精品合集》
  • 《Spring Boot 實現原理與源碼解析 —— 精品合集》
  • 《數據庫實體設計合集》
  • 《Java 面試題 —— 精品合集》
  • 《Java 學習指南 —— 精品合集》

序言:比起傳統復雜的單體工程,使用Maven的多模塊配置,可以幫助項目劃分模塊,鼓勵重用,防止POM變得過于龐大,方便某個模塊的構建,而不用每次都構建整個項目,并且使得針對某個模塊的特殊控制更為方便。接下來,本文將重點闡述SpringBoot在Maven環境的多模塊構建過程。本項目傳送門:SpringBoot-Integration

一、創建聚合父工程

  • 1.首先使用 Spring Initializr 來快速創建好一個Maven工程。然后刪除無關的文件,只需保留pom.xml 文件。

聚合父工程

  • 然后在 pom.xml 里面聲明該父工程包含的子模塊。(其它信息就不逐一講述了,諸如繼承SpringBoot官方父工程以及統一依賴管理 請查看下面的注釋說明)
  • <?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"><!-- 基本信息 --><description>SpringBoot 多模塊構建示例</description><modelVersion>4.0.0</modelVersion><name>springboot-integration</name><packaging>pom</packaging><!-- 項目說明:這里作為聚合工程的父工程 --><groupId>com.hehe</groupId><artifactId>springboot-integration</artifactId><version>1.0.0.RELEASE</version><!-- 繼承說明:這里繼承SpringBoot提供的父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.7.RELEASE</version><relativePath/></parent><!-- 模塊說明:這里聲明多個子模塊 --><modules><module>mm-web</module><module>mm-service</module><module>mm-repo</module><module>mm-entity</module></modules><!-- 版本說明:這里統一管理依賴的版本號 --><dependencyManagement><dependencies><dependency><groupId>com.hehe</groupId><artifactId>mm-web</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-repo</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.42</version></dependency></dependencies></dependencyManagement></project>

    二、創建子模塊(module)

    注:這里是使用IDEA來創建子模塊,使用Eclipse的小伙伴可通過 Spring Initializr 構建,然后復制去進去父工程根目錄即可。
    • 1.對著父工程右鍵 - New - Module - > 輸入 mm-web
    • 2.對著父工程右鍵 - New - Module - > 輸入 mm-service
    • 3.對著父工程右鍵 - New - Module - > 輸入 mm-repo
    • 4.對著父工程右鍵 - New - Module - > 輸入 mm-entity
    • 1~4 步驟完成后,分別調整它們的pom.xml 以繼承上面的父工程。例如mm-web模塊的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"><modelVersion>4.0.0</modelVersion><!-- 基本信息 --><groupId>com.hehe</groupId><artifactId>mm-web</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mm-web</name><!-- 繼承本項目的父工程 --><parent><groupId>com.hehe</groupId><artifactId>springboot-integration</artifactId><version>1.0.0.RELEASE</version></parent><!-- Web模塊相關依賴 --><dependencies><dependency><groupId>com.hehe</groupId><artifactId>mm-service</artifactId></dependency><dependency><groupId>com.hehe</groupId><artifactId>mm-entity</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

    三、編寫子模塊代碼

    • 1. 控制層(mm-web)

    結構圖

    啟動類 :MmWebApplication.java (mm-web)

    @SpringBootApplication public class MmWebApplication {public static void main(String[] args) {SpringApplication.run(MmWebApplication.class, args);} }

    控制器:UserController.java (mm-web )

    @RestController @RequestMapping("/user/*") public class UserController {@AutowiredUserService userService;@GetMapping("list")public R list() {try {return R.isOk().data(userService.list());} catch (Exception e) {return R.isFail(e);}}}

    配置文件:application.yml (mm-web)

    spring:datasource:url: jdbc:mysql://localhost:3306/socks?useSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driver
    • 2. 業務層(mm-service)

    結構圖

    實現類:UserServiceImpl.java (mm-service)

    @Service public class UserServiceImpl implements UserService {@AutowiredUserRepository userRepository;@Overridepublic List<User> list() {return userRepository.findAll();} }
    • 3. 數據層(mm-repo)

    結構圖

    數據層代碼:UserRepository.java (mm-repo)

    public interface UserRepository extends JpaRepository<User,String> { }
    • 4. mm-entity (實體模型層)

    結構圖

    R.java 作為統一返回的Bean對象

    package com.hehe.integration.common;import java.io.Serializable;public class R<T> implements Serializable {private static final long serialVersionUID = -4577255781088498763L;private static final int OK = 0;private static final int FAIL = 1;private static final int UNAUTHORIZED = 2;private T data; //服務端數據private int status = OK; //狀態碼private String msg = ""; //描述信息//APISpublic static R isOk(){return new R();}public static R isFail(){return new R().status(FAIL);}public static R isFail(Throwable e){return isFail().msg(e);}public R msg(Throwable e){this.setMsg(e.toString());return this;}public R data(T data){this.setData(data);return this;}public R status(int status){this.setStatus(status);return this;}//Constructorspublic R() {}//Getter&Setters}@Entity @Table(name = "T_USER") public class User {@Id@Column(name = "USERID")private String userId;@Column(name = "USERNAME")private String username;@Column(name = "PASSWORD")private String password;//Getter&Setters }

    三、運行項目

    為了更好的學習效果,建議先下載本項目,在IDE運行成功之后,然后再由自己手工敲一遍。

    具體步驟:

    • 1.首先下載好 springboot-socks,然后打開springboot-integration 工程。

    • 2.安裝Mysql數據庫,然后創建數據庫socks,并添加表t_user,插入數據如圖:

    sock.t_user.PNG

  • 配置好整個項目之后,這里只需要運行mm-web模塊下的MmWebApplication的啟動類就可以了,如正常啟動后,訪問http://localhost:8080 可查詢到用戶列表信息。如下圖:
  • 四、運維部署(多模塊打包)

    1. 添加打包插件

    注意:多模塊項目僅僅需要在啟動類所在的模塊添加打包插件即可!!不要在父類添加打包插件,因為那樣會導致全部子模塊都使用spring-boot-maven-plugin的方式來打包(例如BOOT-INF/com/hehe/xx),而mm-web模塊引入mm-xx 的jar 需要的是裸露的類文件,即目錄格式為(/com/hehe/xx)。

    本案例的啟動模塊是 mm-web , 只需在它的pom.xml 添加打包插件(spring-boot-maven-plugin):

    <!--多模塊打包:只需在啟動類所在模塊的POM文件:指定打包插件 --><build><plugins><plugin><!--該插件主要用途:構建可執行的JAR --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

    2. 打包工程

    首先在IDE打開Maven插件,然后在聚合父工程spring-boot-integration中點擊 clean ,然后點擊 package 進行打包。如圖:

    打包效果如下:

    [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] spring-boot-integration ............................ SUCCESS [ 0.000 s] [INFO] mm-entity .......................................... SUCCESS [ 1.915 s] [INFO] mm-repo ............................................ SUCCESS [ 0.235 s] [INFO] mm-service ......................................... SUCCESS [ 0.218 s] [INFO] mm-web ............................................. SUCCESS [ 0.891 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.798 s [INFO] Finished at: 2017-10-18T17:17:02+08:00 [INFO] Final Memory: 35M/300M [INFO] ------------------------------------------------------------------------

    打包地址默認在Target目錄:

    3. 啟動項目

    通過命令行啟動項目:

    xxmm-webtarget>java -jar mm-web-0.0.1-SNAPSHOT.jar

    啟動效果如下:

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的maven多模块合并打包_Spring Boot 多模块项目实践(附打包方法)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 成人极品视频 | 亚洲免费在线 | 蜜乳av一区 | 波多野吉衣在线视频 | 国产精品污www一区二区三区 | 国产精品福利在线播放 | 免费色播| 伊人久久五月天 | 久久精品99国产精 | 国产麻豆一精品一男同 | 丝袜人妻一区二区 | 在线免费av观看 | 91亚洲精品久久久蜜桃 | 美女毛片在线观看 | 国产麻豆电影在线观看 | 性感美女毛片 | 日韩一区在线看 | 91学生片黄| 丰满的女邻居 | 日韩伦理在线视频 | 高h av | 欧美变态视频 | 国产做受麻豆动漫 | 中文字幕av二区 | 国内福利视频 | 欧美aa一级 | 老头把女人躁得呻吟 | 久久国产中文 | av片在线观看 | 国产资源在线观看 | 成人超碰在线 | 成品人视频ww入口 | 亚洲天堂av电影 | 国产一级片毛片 | 色香蕉在线 | 成人a网站 | 91黄色小视频 | 尤物影院在线观看 | 在线观看国产区 | 中文字幕国产精品 | 男女做爰猛烈吃奶啪啪喷水网站 | 韩国黄色精品 | 亚洲欧美一区二区三区在线观看 | 就是喜欢被他干 | 欧美精品成人一区二区在线观看 | www.污污| 伦理片波多野结衣 | 国产欧美一区二区三区四区 | 在线观看毛片网站 | 国产精品入口麻豆 | 色人阁在线视频 | 日韩激情图片 | 精品国产xxx | 成人精品水蜜桃 | 你懂的91 | 中国少妇乱子伦视频播放 | 国产免费av片在线观看 | 师生出轨h灌满了1v1 | 木下凛凛子av一区二区三区 | 日产久久久久久 | 玉足女爽爽91 | 国产又粗又长又硬免费视频 | 肉丝肉足丝袜一区二区三区 | 丁香综合网 | 夜夜操影院| 国产亚洲网站 | 国产精品九九九 | 欧美日韩亚洲国产精品 | 色一情一乱一伦 | 亚洲精品乱码久久久久久不卡 | 美国一区二区三区 | 午夜免费福利在线 | 成人1区2区 | 欧美精品在线第一页 | 日韩免费三级 | 无人在线观看高清视频 单曲 | 日本视频在线看 | 亚洲欧美一区二区三区 | 不卡av一区二区 | 国产成人精品视频在线观看 | 黄色一级视频网站 | 67194少妇| 亚洲中文字幕无码专区 | 91偷拍视频 | 国产精品精品 | 亚洲精品一区二区三区蜜桃 | 国产肉体ⅹxxx137大胆 | 亚洲免费国产 | 国产中出| 在线观看国产免费av | 国产91综合| 亚洲美女精品 | 午夜视频导航 | 国产av一区二区三区传媒 | 欧美激情另类 | 国产欧美在线观看视频 | 一区在线免费 | 日本免费在线观看视频 | 国产又黄又爽视频 |