Spring Boot應(yīng)用打包時(shí)不包含關(guān)聯(lián)jar包以及配置文件

1. pom.xml中的配置

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>**/*.properties</exclude>
                    <exclude>**/*.xml</exclude>
                    <exclude>**/*.yml</exclude>
                    <exclude>static/**</exclude>
                    <exclude>templates/**</exclude>
                </excludes>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <layout>ZIP</layout>
                <includes>
                    <include>
                        <groupId>non-exists</groupId>
                        <artifactId>non-exists</artifactId>
                    </include>
                </includes>
            </configuration>
            <!--
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>classes</classifier>
                        <attach>false</attach>
                    </configuration>
                </execution>
            </executions>
            -->
        </plugin>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <descriptor>assembly.xml</descriptor>
                </descriptors>
                <finalName>saas-wechat-webapp-${project.version}</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
插件 說明
maven-jar-plugin 通過此配置躬审,可以在生成jar包時(shí)碴巾,不包含resources中的配置文件以及可能存在的網(wǎng)頁(yè)模板等信息
spring-boot-maven-plugin 這個(gè)是spring boot使用的插件鼓寺,通過相關(guān)的配置可以不生成fat jar包,即在jar包中不包含關(guān)聯(lián)的jar包贤壁,其中的executions配置是可以將springboot啟動(dòng)相關(guān)的類單獨(dú)打在一個(gè)包中,不需要的話埠忘,就注釋掉即可
maven-assembly-plugin 這個(gè)assembly插件脾拆,可以根據(jù)需要生成相關(guān)的發(fā)布目錄,并進(jìn)行壓縮打包處理莹妒。使用此插件后名船,可以在命令行運(yùn)行mvn package就會(huì)自動(dòng)進(jìn)行打包處理

2. assembly.xml配置文件

assembly插件是根據(jù)配置將代碼進(jìn)行組織,如果我們不使用fatjar包格式旨怠,那么可以使用這個(gè)插件渠驼,組織好發(fā)布運(yùn)行相關(guān)的目錄。

準(zhǔn)備發(fā)布的項(xiàng)目目錄結(jié)構(gòu)如下:

$ ---
    |-- config:保存系統(tǒng)相關(guān)的配置文件
    |-- static: 保存所有靜態(tài)頁(yè)面的文件鉴腻,如果是前后端分離的情況迷扇,就是前端代碼所在
    |-- resources: 保存項(xiàng)目自己的頁(yè)面模板等代碼
    |-- lib: 保存所有依賴的jar包
    |-- xxxxx-main.jar: 項(xiàng)目主要的運(yùn)行包百揭,包括了springboot所有相關(guān)的啟動(dòng)類
    |-- startup.sh: 系統(tǒng)啟動(dòng)腳本
    |-- shutdown.sh: 系統(tǒng)停止腳本
  • 通過以下配置將配置文件拷貝到發(fā)布包的config目錄下
<fileSet>
    <directory>target/classes</directory>
    <outputDirectory>config</outputDirectory>
    <includes>
        <include>*.yml</include>
        <include>*.xml</include>
        <include>*.properties</include>
    </includes>
</fileSet>
  • 通過以下配置將頁(yè)面模板等信息拷貝到發(fā)布包的static目錄下
<fileSet>
    <directory>target/classes</directory>
    <outputDirectory>resources</outputDirectory>
    <includes>
        <include>static/**</include>
        <include>templates/**</include>
    </includes>
</fileSet>
  • 通過以下配置將項(xiàng)目所有依賴包拷貝到發(fā)布包的lib目錄下
<dependencySets>
    <dependencySet>
        <outputDirectory>lib</outputDirectory>
        <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>
</dependencySets>

3. 定制run命令

spring boot classpath搜索次序:

1. 當(dāng)前目錄下的 /config  子目錄。
2. 當(dāng)前目錄蜓席。
3. classpath下的 /config  包器一。
4. classpath根路徑(root)。
該列表是按優(yōu)先級(jí)排序的(列表中位置高的路徑下定義的屬性將覆蓋位置低的)

spring boot對(duì)資源文件的處理方式:

  • 默認(rèn)的靜態(tài)資源路徑有:classpath:/META-INF/resources/瓮床,classpath:/resources/盹舞,classpath:/static/,classpath:/public/隘庄,都是放在classpath中踢步,在fatjar的情況下,都是直接壓縮在jar包中的丑掺,要做到修改非常不方便获印。

  • 可以通過修改spring.resources.static-locations使用默認(rèn)的配置失效,從而定義自己指定的地址街州,如

    spring.resources.static-locations=classpath:/META-INF/resources/,\
                                      classpath:/resources/,\
                                      classpath:/static/,\
                                      classpath:/public/,\
                                      file:/data/service/saas-ggb-server/static/,\
                                      file:${web.file.upload.path},\
                                      file:${qr.path}
    

    從spring boot搜索classpath來說兼丰,如果static、public唆缴、resources等目錄在當(dāng)前運(yùn)行目錄下鳍征,也可以搜索到

在啟動(dòng)時(shí)直接使用類似如下的命令即可:

java -Dloader.path=./lib,config -jar xxxxx-main.jar

4. 使用jenkins部署時(shí)的要點(diǎn)

  • 在第一次發(fā)布時(shí),可以直接把打包好的zip上傳到服務(wù)器進(jìn)行安裝(解壓即可)
  • 以后在發(fā)布時(shí)面徽,基本不需要更新常用的第三方j(luò)ar包艳丛,只需要更新與業(yè)務(wù)相關(guān)的自己的jar包即可,所以在對(duì)maven項(xiàng)目命名時(shí)趟紊,最好設(shè)計(jì)相關(guān)便于識(shí)別的jar包的名稱
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氮双,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子霎匈,更是在濱河造成了極大的恐慌戴差,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铛嘱,死亡現(xiàn)場(chǎng)離奇詭異暖释,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弄痹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門饭入,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肛真,你說我怎么就攤上這事谐丢。” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵乾忱,是天一觀的道長(zhǎng)讥珍。 經(jīng)常有香客問我,道長(zhǎng)窄瘟,這世上最難降的妖魔是什么衷佃? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蹄葱,結(jié)果婚禮上氏义,老公的妹妹穿的比我還像新娘。我一直安慰自己图云,他們只是感情好惯悠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竣况,像睡著了一般克婶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丹泉,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天情萤,我揣著相機(jī)與錄音,去河邊找鬼摹恨。 笑死筋岛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晒哄。 我是一名探鬼主播泉蝌,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼揩晴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贪磺,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤硫兰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后寒锚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劫映,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年刹前,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泳赋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喇喉,死狀恐怖祖今,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤千诬,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布耍目,位于F島的核電站,受9級(jí)特大地震影響徐绑,放射性物質(zhì)發(fā)生泄漏邪驮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一傲茄、第九天 我趴在偏房一處隱蔽的房頂上張望毅访。 院中可真熱鬧,春花似錦盘榨、人聲如沸喻粹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)磷斧。三九已至,卻和暖如春捷犹,著一層夾襖步出監(jiān)牢的瞬間弛饭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工萍歉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侣颂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓枪孩,卻偏偏與公主長(zhǎng)得像憔晒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔑舞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容