亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

maven打生產(chǎn)環(huán)境可執(zhí)行包的實(shí)現(xiàn)

 更新時(shí)間:2025年01月03日 10:06:24   作者:jforgame  
本文主要介紹了maven打生產(chǎn)環(huán)境可執(zhí)行包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、程序?yàn)槭裁匆虬?/h2>

程序打包的主要目的是將項(xiàng)目的源代碼、依賴庫和其他資源打包成一個(gè)可執(zhí)行的文件或者部署包,方便程序的發(fā)布和部署。以下是一些打包程序的重要理由:

  • 方便部署和分發(fā):打包后的程序可以作為一個(gè)獨(dú)立的實(shí)體,方便復(fù)制和部署到不同的環(huán)境中,包括開發(fā)、測(cè)試和生產(chǎn)環(huán)境。打包后的程序通常包含了所有需要的依賴和配置,并且已經(jīng)做好了預(yù)處理(如編譯、壓縮、優(yōu)化等),減少了部署和配置的復(fù)雜性。

  • 保護(hù)源代碼:打包后的程序通常會(huì)將源代碼進(jìn)行編譯和打包,以二進(jìn)制形式進(jìn)行發(fā)布。這樣可以保護(hù)源代碼的安全性,防止他人對(duì)源代碼的篡改。

  • 管理依賴關(guān)系:在打包過程中,Maven 或其他構(gòu)建工具可以自動(dòng)將項(xiàng)目所需的依賴庫打包到最終的可執(zhí)行文件中。這樣可以簡(jiǎn)化項(xiàng)目的依賴管理,減少對(duì)外部庫和組件的依賴,提高了項(xiàng)目的獨(dú)立性和可移植性。

二,使用maven打包java程序

maven內(nèi)置很多插件,可以非常方便打包。

2.1使用maven-resources-plugin管理資源

maven-resources-plugin插件負(fù)責(zé)復(fù)制過濾資源文件到制定目錄。程序項(xiàng)目的配置可分為兩種,一種是靜態(tài)配置,用于程序內(nèi)部,即使重復(fù)部署也無需改動(dòng),比如log4j,定時(shí)任務(wù)配置quartz等。另外一種是動(dòng)態(tài)配置,用于運(yùn)維部署動(dòng)態(tài)調(diào)整的。

2.1.1maven處理靜態(tài)資源

maven對(duì)于靜態(tài)資源,一般無需額外處理。我們可以把靜態(tài)資源放置在maven項(xiàng)目的src/main/resources目錄。程序打包的時(shí)候就會(huì)默認(rèn)處理。

2.1.2maven處理動(dòng)態(tài)資源

對(duì)于動(dòng)態(tài)資源,我們一般會(huì)在程序源代碼的同級(jí)目錄新增一個(gè)文件夾,例如叫做config,用來放置所有的動(dòng)態(tài)資源。典型的動(dòng)態(tài)有數(shù)據(jù)庫配置jdbc,socket配置等等。如果同樣一份代碼,需要在很多機(jī)器部署,例如,游戲服務(wù)器往往有好幾千個(gè)游戲區(qū),每個(gè)游戲區(qū)的代碼都是一樣的,只是動(dòng)態(tài)資源不一樣。運(yùn)維在部署的時(shí)候,只需要修改動(dòng)態(tài)配置。還可以使用諸如ansible之類自動(dòng)化運(yùn)維工具,做到一鍵部署全部服務(wù)器。

例如jforgame,把動(dòng)態(tài)資源放置在config文件,如下所示:

maven-resources-plugin插件配置,把config配置全部拷貝到j(luò)ar包輸出目錄。

 <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <!-- 配置文件要跟jar包在同一個(gè)目錄 -->
                        <id>copy-config</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/configs</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>configs/</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

2.2使用maven-dependency-plugin復(fù)制依賴

程序在部署的時(shí)候一般采用“瘦客戶端”模式,可執(zhí)行包內(nèi)部只包含業(yè)務(wù)代碼,不包含第三方依賴。這樣可以減小目標(biāo)包的體積(第三方依賴一般不變,只在初次部署使用),加快啟動(dòng)速度。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-jars</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/libs</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

2.3使用maven-jar-plugin打可執(zhí)行包

前面兩個(gè)插件都是處理資源的,這個(gè)插件才是真正將代碼進(jìn)行打包的,我們先來通過配置進(jìn)行說明。

  <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Class-Path>configs/</Class-Path>
                        </manifestEntries>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>libs/</classpathPrefix>
                            <mainClass>jforgame.demo.ServerStartup</mainClass>
                        </manifest>
                    </archive>
                </configuration>
  </plugin>

<mainClass>作用:申明jar包啟動(dòng)類

<Class-Path>作用:把自定義的config動(dòng)態(tài)配置文件夾添加到MANIFEST.MF的Class-Path標(biāo)簽。

<addClasspath>+<classpathPrefix>作用:把maven-dependency-plugin引入的libs下所有第三方依賴統(tǒng)一添加到MANIFEST.MF的Class-Path標(biāo)簽。相關(guān)配置放在MANIFEST.MF文件(用rar程序打開目標(biāo)包)。

到此這篇關(guān)于maven打生產(chǎn)環(huán)境可執(zhí)行包的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)maven打生產(chǎn)環(huán)境可執(zhí)行包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 線程池的實(shí)現(xiàn)方法

    java 線程池的實(shí)現(xiàn)方法

    在本篇文章里小編給大家整理了關(guān)于java 線程池的實(shí)現(xiàn)方法,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • springboot項(xiàng)目整合注冊(cè)功能模塊開發(fā)實(shí)戰(zhàn)

    springboot項(xiàng)目整合注冊(cè)功能模塊開發(fā)實(shí)戰(zhàn)

    這篇文章主要介紹了springboot項(xiàng)目整合注冊(cè)功能模塊開發(fā)實(shí)戰(zhàn),在用戶的注冊(cè)是首先需要查詢當(dāng)前的用戶名是否存在,如果存在則不能進(jìn)行注冊(cè),相當(dāng)于一個(gè)查詢語句,本文通過實(shí)例代碼詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • SpringBoot?Mail郵件任務(wù)詳情

    SpringBoot?Mail郵件任務(wù)詳情

    這篇文章主要介紹了SpringBoot?Mail郵件任務(wù)詳情,文章通過spring-boot-starter-mail包展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • Spring中@Async的使用小結(jié)

    Spring中@Async的使用小結(jié)

    在Java開發(fā)中,我們常常會(huì)遇到需要執(zhí)行耗時(shí)操作的場(chǎng)景,例如文件上傳、網(wǎng)絡(luò)請(qǐng)求等,本文將介紹如何在Java中使用異步方法,并探討其中的一些注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • Java上傳文件圖片到服務(wù)器的方法

    Java上傳文件圖片到服務(wù)器的方法

    這篇文章主要為大家詳細(xì)介紹了Java上傳文件圖片到服務(wù)器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • SpringCloud Feign的使用簡(jiǎn)介

    SpringCloud Feign的使用簡(jiǎn)介

    這篇文章主要介紹了SpringCloud Feign的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下
    2021-04-04
  • java中HashMap的7種遍歷方式與性能分析

    java中HashMap的7種遍歷方式與性能分析

    本文主要介紹了java中HashMap的7種遍歷方式與性能分析,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • java實(shí)體類轉(zhuǎn)json時(shí)null值不要轉(zhuǎn)為"null"問題

    java實(shí)體類轉(zhuǎn)json時(shí)null值不要轉(zhuǎn)為"null"問題

    這篇文章主要介紹了java實(shí)體類轉(zhuǎn)json時(shí)null值不要轉(zhuǎn)為“null”問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • servlet下載文件實(shí)現(xiàn)代碼詳解(五)

    servlet下載文件實(shí)現(xiàn)代碼詳解(五)

    這篇文章主要為大家詳細(xì)介紹了servlet下載文件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java數(shù)組初始化的五種方式

    Java數(shù)組初始化的五種方式

    數(shù)組是Java中最基礎(chǔ)且常用的數(shù)據(jù)結(jié)構(gòu)之一,其初始化方式多樣且各具特點(diǎn),本文詳細(xì)講解Java數(shù)組初始化的五種方式,分析其適用場(chǎng)景、優(yōu)劣勢(shì)對(duì)比及注意事項(xiàng),幫助避免常見陷阱并提升代碼質(zhì)量,需要的朋友可以參考下
    2025-04-04

最新評(píng)論