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

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ā)、測試和生產(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í)行文件中。這樣可以簡化項(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)文章

  • MyBatis的mapper.xml文件中入?yún)⒑头祷刂档膶?shí)現(xiàn)

    MyBatis的mapper.xml文件中入?yún)⒑头祷刂档膶?shí)現(xiàn)

    這篇文章主要介紹了MyBatis的mapper.xml文件中入?yún)⒑头祷刂档膶?shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Spring?Bean創(chuàng)建的另一條捷徑

    Spring?Bean創(chuàng)建的另一條捷徑

    這篇文章主要為大家介紹了Spring?Bean創(chuàng)建的另一條方法捷徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • java使用異或?qū)ξ募M(jìn)行加密解密

    java使用異或?qū)ξ募M(jìn)行加密解密

    這篇文章主要為大家詳細(xì)介紹了java使用異或方式對(duì)文件進(jìn)行加密解密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • idea 使用Maven Helper idea的解決方法

    idea 使用Maven Helper idea的解決方法

    這篇文章主要介紹了idea 使用Maven Helper idea的解決方法,本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java?GUI實(shí)現(xiàn)多個(gè)窗口切換效果

    Java?GUI實(shí)現(xiàn)多個(gè)窗口切換效果

    這篇文章主要為大家詳細(xì)介紹了Java?GUI實(shí)現(xiàn)多個(gè)窗口的切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • java fastJson轉(zhuǎn)JSON兩種常見的轉(zhuǎn)義操作

    java fastJson轉(zhuǎn)JSON兩種常見的轉(zhuǎn)義操作

    在實(shí)際開發(fā)中,我們有時(shí)需要將特殊字符進(jìn)行轉(zhuǎn)義,本文主要介紹了java fastJson轉(zhuǎn)JSON兩種常見的轉(zhuǎn)義操作,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • SpringBoot中的靜態(tài)資源訪問的實(shí)現(xiàn)

    SpringBoot中的靜態(tài)資源訪問的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot中的靜態(tài)資源訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 淺談java獲取UUID與UUID的校驗(yàn)

    淺談java獲取UUID與UUID的校驗(yàn)

    這篇文章主要介紹了java獲取UUID與UUID的校驗(yàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 解決IDEA中快捷鍵Alt+Enter不能使用的問題

    解決IDEA中快捷鍵Alt+Enter不能使用的問題

    這篇文章主要介紹了解決IDEA中快捷鍵Alt+Enter不能使用的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Spring Bean的定義及三種創(chuàng)建方式

    Spring Bean的定義及三種創(chuàng)建方式

    本文主要介紹了Spring容器獲取Bean的9種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論

永城市| 巴青县| 正定县| 大同县| 土默特右旗| 海林市| 密云县| 阿城市| 北京市| 兴隆县| 高淳县| 兴化市| 瑞昌市| 新郑市| 黄梅县| 易门县| 中超| 临西县| 沂源县| 凤冈县| 南汇区| 镇平县| 苍南县| 田阳县| 郧西县| 西华县| 奉贤区| 漳州市| 浠水县| 梁平县| 班戈县| 卢氏县| 农安县| 灌南县| 千阳县| 楚雄市| 华宁县| 泰安市| 视频| 义马市| 山阴县|