欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

maven快速生成SpringBoot打包文件的方法步驟

 更新時(shí)間:2024年10月22日 11:51:15   作者:angushine  
本文主要介紹了使用Maven快速生成SpringBoot項(xiàng)目打包文件的方法,包括如何生成可執(zhí)行的JAR文件,如何將配置文件、運(yùn)行腳本、調(diào)試腳本、證書文件等拷貝到指定目錄,及如何編譯出部署包,這種方法能大大方便微服務(wù)的部署,提高部署效率

最近在部署基于SpringBoot開發(fā)的項(xiàng)目時(shí),由于微服務(wù)較多,本地工程編譯后只得出一個(gè)JAR包,部署起來實(shí)在不方便,因此總想著怎么偷偷懶,執(zhí)行一次命令編譯出整個(gè)部署的文件。先說結(jié)果,最后期望打包的目錄如下:

在這里插入圖片描述

各個(gè)目錄或文件說明如下:

bin:包含程序啟動(dòng)和停止的兩個(gè)腳本,后臺(tái)運(yùn)行腳本
cert:程序運(yùn)行過程中使用的一些證書
config:各種配置文件
logs:運(yùn)行日志
kafka-roma.jar:主程序
run.bat:windows下運(yùn)行腳本
run.sh:linux下運(yùn)行腳本,非后臺(tái)腳本

先上pom1.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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>kafka-roma</artifactId>
    <version>1.0</version>
    <name>kafka-roma</name>
    <description>kafka-roma</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
        <maven.test.skip>true</maven.test.skip>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>2.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.52</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <finalName>${project.artifactId}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>*.properties</exclude>
                    <exclude>*.yml</exclude>
                    <exclude>*.xml</exclude>
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>org.example.roma.KafkaRomaApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <include>*.properties</include>
                                        <include>*.yml</include>
                                        <include>**/*.xml</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/roma/config/</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-resources1</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/bin</directory>
                                    <includes>
                                        <include>start.sh</include>
                                        <include>stop.sh</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/roma/bin/</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-resources2</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/bin</directory>
                                    <includes>
                                        <include>run.sh</include>
                                        <include>run.bat</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/roma/</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-resources3</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>cert</directory>
                                    <includes>
                                        <include>*.jks</include>
                                        <include>*.crt</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/roma/cert/</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-resources4</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>${project.build.directory}</directory>
                                    <includes>
                                        <include>*.jar</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/roma/</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

下面逐一說明打包的各個(gè)plugin,對(duì)打包輸出關(guān)鍵看build節(jié)點(diǎn),finalName確定最后輸出jar包的名字,這里采用project.artifactId,因此輸出的文件名為kafka-roma.jar。

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
            <exclude>*.properties</exclude>
            <exclude>*.yml</exclude>
            <exclude>*.xml</exclude>
        </excludes>
    </resource>
</resources>

這里主要控制不要把src/main/resources目錄下properties、xml、yml等配置文件打包到JAR中,由于后面考慮方便修改配置文件,因此沒有將配置文件打包到JAR中,如果采用DOCKER等方式部署,方便后期生成鏡像,可以刪除這個(gè)節(jié)點(diǎn)。如果該目錄下有子目錄中的相關(guān)的文件也不想打包到JAR中,修改如下

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
            <exclude>**/*.properties</exclude>
            <exclude>**/*.yml</exclude>
            <exclude>**/*.xml</exclude>
        </excludes>
    </resource>
</resources>

**表示多級(jí)子目錄,*表示一級(jí)子目錄

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    <configuration>
        <mainClass>org.example.roma.KafkaRomaApplication</mainClass>
    </configuration>
    <executions>
        <execution>
            <id>repackage</id>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

這個(gè)配置會(huì)將你的應(yīng)用程序打包成一個(gè)可執(zhí)行的 JAR 文件,包含了所有依賴項(xiàng)。mainClass為JAR包中的啟動(dòng)類。
maven-resources-plugin主要拷貝各類文件

<execution>
    <id>copy-resources</id>
    <phase>package</phase>
    <goals>
        <goal>copy-resources</goal>
    </goals>
    <configuration>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>*.properties</include>
                    <include>*.yml</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <outputDirectory>${project.build.directory}/roma/config/</outputDirectory>
    </configuration>
</execution>

拷貝配置文件到config目錄下

<execution>
    <id>copy-resources1</id>
    <phase>package</phase>
    <goals>
        <goal>copy-resources</goal>
    </goals>
    <configuration>
        <resources>
            <resource>
                <directory>src/main/bin</directory>
                <includes>
                    <include>start.sh</include>
                    <include>stop.sh</include>
                </includes>
            </resource>
        </resources>
        <outputDirectory>${project.build.directory}/roma/bin/</outputDirectory>
    </configuration>
</execution>

拷貝運(yùn)行腳本到bin目錄下

<execution>
    <id>copy-resources2</id>
    <phase>package</phase>
    <goals>
        <goal>copy-resources</goal>
    </goals>
    <configuration>
        <resources>
            <resource>
                <directory>src/main/bin</directory>
                <includes>
                    <include>run.sh</include>
                    <include>run.bat</include>
                </includes>
            </resource>
        </resources>
        <outputDirectory>${project.build.directory}/roma/</outputDirectory>
    </configuration>
</execution>

拷貝調(diào)試腳本到根目錄下

<execution>
    <id>copy-resources3</id>
    <phase>package</phase>
    <goals>
        <goal>copy-resources</goal>
    </goals>
    <configuration>
        <resources>
            <resource>
                <directory>cert</directory>
                <includes>
                    <include>*.jks</include>
                    <include>*.crt</include>
                </includes>
            </resource>
        </resources>
        <outputDirectory>${project.build.directory}/roma/cert/</outputDirectory>
    </configuration>
</execution>

拷貝證書文件到根目錄下

<execution>
    <id>copy-resources4</id>
    <phase>package</phase>
    <goals>
        <goal>copy-resources</goal>
    </goals>
    <configuration>
        <resources>
            <resource>
                <directory>${project.build.directory}</directory>
                <includes>
                    <include>*.jar</include>
                </includes>
            </resource>
        </resources>
        <outputDirectory>${project.build.directory}/roma/</outputDirectory>
    </configuration>
</execution>

拷貝JAR到根目錄下。
當(dāng)需要編譯出部署包時(shí),執(zhí)行maven clean package -f pom1.xml即可。

到此這篇關(guān)于maven快速生成打包文件的方法步驟的文章就介紹到這了,更多相關(guān)maven 生成打包文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springMarchal集成xStream的完整示例代碼

    springMarchal集成xStream的完整示例代碼

    這篇文章主要介紹了springMarchal集成xStream的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java API方式調(diào)用Kafka各種協(xié)議的方法

    Java API方式調(diào)用Kafka各種協(xié)議的方法

    本篇文章主要介紹了Java API方式調(diào)用Kafka各種協(xié)議的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • java報(bào)錯(cuò)之springboot3+vue2項(xiàng)目web服務(wù)層報(bào)錯(cuò)總結(jié)

    java報(bào)錯(cuò)之springboot3+vue2項(xiàng)目web服務(wù)層報(bào)錯(cuò)總結(jié)

    java入門學(xué)習(xí),隨手記錄一下開發(fā)過程中產(chǎn)生的報(bào)錯(cuò),有些錯(cuò)誤是網(wǎng)上搜索再加上自己嘗試,隨手引用了一些其他人的記錄,也是留給自己看的,或是希望能對(duì)其他初學(xué)者有幫助

    2023-06-06
  • SpringBoot實(shí)現(xiàn)文件下載的限速功能

    SpringBoot實(shí)現(xiàn)文件下載的限速功能

    在SpringBoot項(xiàng)目中,實(shí)現(xiàn)文件下載的限速功能可以有效控制服務(wù)器帶寬的占用,并防止單個(gè)用戶消耗過多的資源,本文將通過具體的代碼示例和詳細(xì)的流程解釋,介紹如何在SpringBoot項(xiàng)目中實(shí)現(xiàn)文件下載的限速功能,需要的朋友可以參考下
    2024-07-07
  • java基礎(chǔ)知識(shí)之FileInputStream流的使用

    java基礎(chǔ)知識(shí)之FileInputStream流的使用

    這篇文章主要介紹了java基礎(chǔ)知識(shí)之FileInputStream流的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • MyBatis-Plus實(shí)現(xiàn)對(duì)查詢結(jié)果進(jìn)行分頁的基本步驟

    MyBatis-Plus實(shí)現(xiàn)對(duì)查詢結(jié)果進(jìn)行分頁的基本步驟

    MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,MyBatis-Plus 支持多種數(shù)據(jù)庫的分頁查詢,其分頁功能是通過 Page 類實(shí)現(xiàn)的,本文介紹了使用 MyBatis-Plus 實(shí)現(xiàn)分頁查詢的基本步驟,需要的朋友可以參考下
    2024-08-08
  • SpringBoot中的Aop用法示例詳解

    SpringBoot中的Aop用法示例詳解

    這篇文章主要介紹了SpringBoot中的Aop用法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • java9學(xué)習(xí)系列之在docker中如何運(yùn)行java9

    java9學(xué)習(xí)系列之在docker中如何運(yùn)行java9

    最近在學(xué)習(xí)java9,所以將學(xué)習(xí)中遇到的一些知識(shí)點(diǎn)分享給大家,下面這篇文章主要給大家介紹了java9學(xué)習(xí)系列之在docker中如何運(yùn)行java9的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-09-09
  • 探討:使用httpClient在客戶端與服務(wù)器端傳輸對(duì)象參數(shù)的詳解

    探討:使用httpClient在客戶端與服務(wù)器端傳輸對(duì)象參數(shù)的詳解

    本篇文章是對(duì)使用httpClient在客戶端與服務(wù)器端傳輸對(duì)象參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Java中String.split()用法小結(jié)

    Java中String.split()用法小結(jié)

    這篇文章主要介紹了Java中String.split()用法小結(jié)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07

最新評(píng)論