最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot項目父子多模塊打包方式

 更新時間:2024年01月02日 09:02:30   作者:洋哥登陸  
這篇文章主要介紹了springboot項目父子多模塊打包方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

springboot項目父子多模塊打jar包

1.項目工程架構(gòu)

  • Student:父工程Maven
  • main:子模塊,也是啟動類MainApplication所在的模塊,main依賴其他模塊
  • common、core、student等:子模塊。除main模塊之外,依賴部分或不依賴的其他模塊

注意事項:父工程創(chuàng)建為Maven,啟動類所在模塊創(chuàng)建時一定要用SpringBoot項目,其他子模塊創(chuàng)建時Maven、SpringBoot都可以。

2.各個模塊pom文件配置

父工程Student

<?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.example</groupId>
    <artifactId>Student</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Student</name>
 
    <modules>
        <module>main</module>
        <module>student</module>
        <module>struct</module>
        <module>core</module>
        <module>common</module>
    </modules>
 
</project>

注:在父工程的pom文件中一定不能有spring-boot-maven-plugin插件,否者這個插件就將傳遞到每一個子模塊中,打包會出錯;

main啟動類模塊

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- parent修改為父工程信息 -->
    <parent>
        <groupId>com.example</groupId>
        <artifactId>Student</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>main</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>main</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
 
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
 
<!-- ************************************************************************ -->
        <!-- 子模塊依賴 -->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>core</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
 
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
 
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>student</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
 
    </dependencies>
 
    <build>
        <finalName>main</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
 
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 指定該Main Class為全局的唯一入口 -->
                    <mainClass>com.example.main.MainApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中-->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

注:在該子模塊的pom文件中必須引入spring-boot-maven-plugin打包插件,并且要配置將所依賴的jar包全都打到這一包中,如果在其他模塊中引入了spring-boot-maven-plugin將會每個模塊都單獨打成一個包,無法拉取到啟動類所在包中;

core子模塊pom文件,其他子模塊類似

<?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為父工程信息 -->
    <parent>
        <artifactId>Student</artifactId>
        <groupId>com.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
 
    <artifactId>core</artifactId>
 
    <dependencies>
            <!-- dependency依賴區(qū) -->
    </dependencies>

</project>

3.執(zhí)行生成jar包和部署過程

通過maven菜單,在父工程下package(或mvn package命令)

這里需要注意的是雖然我們是將所有的jar都搭到main這個jar中,但是我們執(zhí)行clean和package卻是要對父工程進行;

部署:將打好的jar包上傳到服務(wù)器的任意路徑上,執(zhí)行 java -jar main.jar(前提需要安裝jdk并配置環(huán)境變量,并且版本和項目構(gòu)建的版本一致)

注意:在linux環(huán)境下(通過xshell連接)運行"java -jar xxx.jar",項目成功運行后關(guān)閉窗口或者ctrl+z,會直接關(guān)閉掉項目,所以需要通過nohup和&命令配合:“nohup java -jar xxx.jar &”,在目錄下會生成nohup.out日志文件查看:"tail -f nohup.out"就可以查看項目日志了。

springboot項目父子多模塊打war包

修改main啟動類模塊pom

<!-- 打包方式為war包 -->
<packaging>war</packaging>
 
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
    <!-- 移除嵌入式tomcat插件 -->
   <exclusions>
      <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
    /exclusions>
</dependency>         
 
 <!-- war包插件 -->
 <plugin>
     <artifactId>maven-war-plugin</artifactId>
     <version>3.2.3</version>
     <configuration>
           <!-- 把class打包jar作為附件 -->
           <attachClasses>true</attachClasses>
     </configuration>
 </plugin>

修改springboot啟動類,啟動類繼承SpringBootServletInitializer,重寫configure方法,讓Servlet容器啟動時啟動Spring Boot

@SpringBootApplication
@ComponentScan("com.example.**")
@MapperScan("com.example.**.mapper")
public class MainApplication extends SpringBootServletInitializer {
 
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
 
    /**
     *  繼承SpringBootServletInitializer ,覆蓋configure(),把啟動類Application注冊進去。
     *  外部web應(yīng)用服務(wù)器構(gòu)建Web Application Context的時候,會把啟動類添加進去
     * @param builder
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MainApplication.class);
    }
}

其他說明,當(dāng)前環(huán)境及工具版本: 

springboot版本2.4.5 

jdk版本1.8.0 

tomcat版本apache-tomcat-8.5.45

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring boot使用@Async異步注解的實現(xiàn)原理+源碼

    spring boot使用@Async異步注解的實現(xiàn)原理+源碼

    通常我們都是采用多線程的方式來實現(xiàn)上述業(yè)務(wù)功能,但spring 提供更優(yōu)雅的方式來實現(xiàn)上述功能,就是@Async 異步注解,在方法上添加@Async,spring就會借助AOP,異步執(zhí)行方法,接下來通過本文給大家介紹spring boot異步注解的相關(guān)知識,一起看看吧
    2021-06-06
  • java實現(xiàn)文本復(fù)制功能

    java實現(xiàn)文本復(fù)制功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)文本復(fù)制功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Spring Boot實現(xiàn)Undertow服務(wù)器同時支持HTTP2、HTTPS的方法

    Spring Boot實現(xiàn)Undertow服務(wù)器同時支持HTTP2、HTTPS的方法

    這篇文章考慮如何讓Spring Boot應(yīng)用程序同時支持HTTP和HTTPS兩種協(xié)議。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Spring?Boot統(tǒng)一處理全局異常的實戰(zhàn)教程

    Spring?Boot統(tǒng)一處理全局異常的實戰(zhàn)教程

    最近在做項目時需要對異常進行全局統(tǒng)一處理,所以下面這篇文章主要給大家介紹了關(guān)于Spring?Boot統(tǒng)一處理全局異常的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • JAVA 集成 PF4J 插件框架的應(yīng)用場景分析

    JAVA 集成 PF4J 插件框架的應(yīng)用場景分析

    PF4J是一個強大的Java插件框架,允許開發(fā)者將應(yīng)用程序分解為可擴展的模塊,本文介紹了PF4J的基本概念和如何在Java項目中集成,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-03-03
  • SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口

    SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口

    接口限流是為了保護系統(tǒng)和服務(wù),防止因為過多的請求而崩潰,本文主要介紹了SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Java線程中的Thread.yield()詳細解析

    Java線程中的Thread.yield()詳細解析

    這篇文章主要介紹了Java線程中的Thread.yield()詳細解析,yield()讓當(dāng)前線程從運行狀態(tài)?轉(zhuǎn)為?就緒狀態(tài),以允許具有相同優(yōu)先級的其他線程獲得運行機會,需要的朋友可以參考下
    2023-11-11
  • 使用Java模擬鼠標(biāo)和鍵盤的詳細操作步驟

    使用Java模擬鼠標(biāo)和鍵盤的詳細操作步驟

    這篇文章主要介紹了使用Java模擬鼠標(biāo)和鍵盤的詳細操作步驟,要運行上面提供的Java程序,您需要遵循幾個步驟來設(shè)置Java環(huán)境、編寫程序代碼,并執(zhí)行該程序,文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2024-05-05
  • SpringBoot默認使用HikariDataSource數(shù)據(jù)源方式

    SpringBoot默認使用HikariDataSource數(shù)據(jù)源方式

    這篇文章主要介紹了SpringBoot默認使用HikariDataSource數(shù)據(jù)源方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解Java目錄操作與文件操作教程

    詳解Java目錄操作與文件操作教程

    本章具體介紹了目錄操作、文件操作的基本使用方法和常用函數(shù),圖解穿插代碼實現(xiàn),感興趣的朋友來看看吧
    2022-03-03

最新評論

武乡县| 洪雅县| 利津县| 哈尔滨市| 美姑县| 霍州市| 察雅县| 海伦市| 浪卡子县| 嘉兴市| 元谋县| 湖州市| 应城市| 甘孜| 孝昌县| 石渠县| 五家渠市| 沛县| 安溪县| 大关县| 白朗县| 库车县| 石景山区| 济宁市| 海晏县| 隆尧县| 正镶白旗| 永泰县| 偃师市| 许昌市| 阳东县| 金川县| 雷波县| 潮州市| 茂名市| 乐安县| 双鸭山市| 通辽市| 酒泉市| 银川市| 东莞市|