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

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

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

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

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

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

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

  • 管理依賴關(guān)系:在打包過程中,Maven 或其他構(gòu)建工具可以自動將項(xiàng)目所需的依賴庫打包到最終的可執(zhí)行文件中。這樣可以簡化項(xiàng)目的依賴管理,減少對外部庫和組件的依賴,提高了項(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ù)部署也無需改動,比如log4j,定時任務(wù)配置quartz等。另外一種是動態(tài)配置,用于運(yùn)維部署動態(tài)調(diào)整的。

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

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

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

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

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

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

 <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <!-- 配置文件要跟jar包在同一個目錄 -->
                        <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ù)制依賴

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

            <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í)行包

前面兩個插件都是處理資源的,這個插件才是真正將代碼進(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包啟動類

<Class-Path>作用:把自定義的config動態(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)容請搜索腳本之家以前的文章或繼續(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à)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    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使用異或方式對文件進(jìn)行加密解密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • idea 使用Maven Helper idea的解決方法

    idea 使用Maven Helper idea的解決方法

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

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

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

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

    在實(shí)際開發(fā)中,我們有時需要將特殊字符進(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ì),對大家的學(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ì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 解決IDEA中快捷鍵Alt+Enter不能使用的問題

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

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

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

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

最新評論

峡江县| 西充县| 乌拉特前旗| 长子县| 博野县| 宁明县| 嵊州市| 陆河县| 黔南| 洞头县| 比如县| 化德县| 涡阳县| 双桥区| 梁河县| 元氏县| 乐清市| 高邑县| 黑水县| 临沧市| 民乐县| 古浪县| 孝昌县| 南雄市| 宜春市| 阳原县| 灵川县| 简阳市| 定南县| 平和县| 临颍县| 连江县| 永胜县| 扎鲁特旗| 凤台县| 灌南县| 安达市| 西吉县| 瑞丽市| 民勤县| 安新县|