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

springboot-assembly自定義打包全過(guò)程

 更新時(shí)間:2023年06月20日 09:25:31   作者:阿拉的夢(mèng)想  
這篇文章主要介紹了springboot-assembly自定義打包全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot-assembly自定義打包

我們打包項(xiàng)目的時(shí)候,一般只會(huì)打出一個(gè)可執(zhí)行jar。有時(shí),這個(gè)jar需要附帶啟動(dòng)腳本或外置配置文件。此時(shí)就可以使用assembly自定義打包。

使用場(chǎng)景:按照自己的需求將需要的文件打包到自己指定的目錄。

配置maven-assembly-plugin

放到要打包的pom.xml中

  <build>
        <finalName>sb-my</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--<version>1.3.3.RELEASE</version>-->
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--repackage,其在Maven的package生命周期階段,能夠?qū)vn package生成的軟件包,再次打包為可執(zhí)行的軟件包,并將mvn package生成的軟件包重命名為*.original-->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <!--appendAssemblyId: 打包后的包名是否包含assembly的id名,assembly的配置在后面介紹;-->
                        <id>make-assembly</id>
                        <!--execution:phase加入package后,則在執(zhí)行maven package時(shí)就可以調(diào)用maven-assembly-plugin插件定義的打包方式。-->
                        <phase>package</phase>
                        <goals>
                            <!--只執(zhí)行一次-->
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <finalName>sb-my-${version}</finalName>
                    <archive>
                        <manifest>
                            <mainClass>cn.demo.Application</mainClass>
                        </manifest>
                    </archive>
                    <descriptors>
                        <!--descriptor:引用的assembly配置文件,可以用多個(gè),即可以同時(shí)打包多個(gè)格式的包;-->
                        <descriptor>src/main/resources/assembly/assembly.xml</descriptor>
                    </descriptors>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
            </plugin>
        </plugins>
    </build>

自定義打包配置文件assembly.xml

在src/main/resources/assembly/下新建assembly.xml

<assembly>
    <id>assembly</id>
    <formats>
        <!-- 打包成tar.gz格式,如果需要打包成zip格式,填寫(xiě)zip -->
        <format>tar.gz</format>
    </formats>
    <!-- 如果為true,打包出來(lái)的文件結(jié)構(gòu)第一層為pom.xml里面定義的artifactId-version -->
    <includeBaseDirectory>true</includeBaseDirectory>
    <!--fileSets 可以設(shè)置文件被打包的具體配置。可以過(guò)濾哪些文件被打包-->
    <fileSets>
        <fileSet>
            <!--資源目錄-->
            <directory>doc</directory>
            <includes>
                <!--過(guò)濾哪些文件被打包-->
                <include>*.sh</include>
            </includes>
            <!-- 輸出到當(dāng)前目錄 -->
            <outputDirectory>.</outputDirectory>
            <!-- 所有文件權(quán)限為755 -->
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <directory>doc/sql</directory>
            <includes>
                <include>*.sql</include>
            </includes>
            <outputDirectory>./doc/sql</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>doc</directory>
            <includes>
                <include>*.docx</include>
            </includes>
            <outputDirectory>./doc</outputDirectory>
        </fileSet>
        <!--        <fileSet>
                    <directory>src/main/resources/</directory>
                    <includes>
                        <include>application.properties</include>
                        <include>java.env</include>
                    </includes>
                    <outputDirectory>.</outputDirectory>
                </fileSet>-->
    </fileSets>
    <files>
        <file>
            <source>src/main/resources/application.properties</source>
            <!--重命名文件-->
            <destName>config.properties</destName>
            <outputDirectory>.</outputDirectory>
        </file>
        <file>
            <!--jar文件是直接從target目錄下拷貝然后輸出到當(dāng)前包中的-->
            <source>target/sb-my.jar</source>
            <outputDirectory>.</outputDirectory>
        </file>
    </files>
</assembly>

效果

springboot基于assembly插件打包

assembly打包的優(yōu)點(diǎn)

讓springboot能夠加載jar外的配置文件。

方便提供一個(gè)服務(wù)化的啟動(dòng)腳本。

pom定義 

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.0.0</version>
                <!--<configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>-->
                <executions>
                    <execution>
                        <id>bundle</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <!-- <appendAssemblyId>false</appendAssemblyId> -->
                            <descriptors>
                               <descriptor>${basedir}/src/main/build/assembly.xml</descriptor>
                            </descriptors>
                            <!-- 打包后的文件生成目錄-->
                            <!--<outputDirectory>${project.build.directory}/dist/</outputDirectory>-->
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <!--main啟動(dòng)類-->
                            <mainClass>com.test.WorkWebApplication</mainClass>
                            <!--生成的manifest中classpath的前綴,因?yàn)橐训谌絡(luò)ar放到lib目錄下,所以classpath的前綴是lib/-->
                            <classpathPrefix>lib/</classpathPrefix>
                            <addClasspath>true</addClasspath>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>conf/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <!--過(guò)濾掉不希望包含在jar中的文件-->
                    <excludes>
                        <!-- 排除不需要的文件夾(路徑是jar包內(nèi)部的路徑) -->
                        <exclude>**/assembly/</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

說(shuō)明:assembly.xml存放于src/main/build目錄,此外用于發(fā)布的config、bin目錄及文件都放到這個(gè)目錄;

具體內(nèi)容:

<assembly>
    <id>1.0</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <!-- config files -->
        <fileSet>
            <directory>${basedir}/src/main/resources</directory>
            <outputDirectory>/conf</outputDirectory>
            <includes>
                <include>*.xml</include>
                <include>*.properties</include>
                <include>*.yml</include>
                <include>*.key</include>
                <include>dev/*</include>
                <include>prod/*</include>
                <include>test/*</include>
            </includes>
            <fileMode>0644</fileMode>
            <lineEnding>unix</lineEnding>
        </fileSet>
        <fileSet>
            <directory>target</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <!-- scripts -->
        <fileSet>
            <directory>${basedir}/src/main/build/bin</directory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
            <outputDirectory>/bin</outputDirectory>
        </fileSet>
        <!-- executable jar -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>${project.artifactId}-${project.version}.jar</include>
                <!--<include>${project.artifactId}-${project.version}-jar-with-dependencies.jar</include>-->
            </includes>
            <fileMode>0755</fileMode>
        </fileSet>
    </fileSets>
</assembly>

執(zhí)行mvn clean package  -Dmaven.test.skip=true 打包

出現(xiàn)如下錯(cuò)誤:

 因?yàn)槭窃趙indows上執(zhí)行assembly任務(wù),但是它包含了相對(duì)于linux的路徑。

解決方案:將outputDirectory節(jié)點(diǎn)直接閉合;或是在linux目錄前加一個(gè)點(diǎn)?;蛘吒某?{file.separator}

因此將上述腳本改成如下

<assembly>
    <id>1.0</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <!-- config files -->
        <fileSet>
            <directory>src/main/resources/</directory>
            <outputDirectory>${file.separator}conf</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>bin/</directory>
            <outputDirectory>${file.separator}</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>target</directory>
            <outputDirectory>${file.separator}</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <!-- scripts -->
        <fileSet>
            <directory>${basedir}/src/main/build/bin</directory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>0755</fileMode>
            <outputDirectory>${file.separator}bin</outputDirectory>
        </fileSet>
        <!-- executable jar -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>${file.separator}</outputDirectory>
            <includes>
                <include>${project.artifactId}-${project.version}.jar</include>
                <!--<include>${project.artifactId}-${project.version}-jar-with-dependencies.jar</include>-->
            </includes>
            <fileMode>0755</fileMode>
        </fileSet>
    </fileSets>
</assembly>

繼續(xù)執(zhí)行打包命令,格式如下:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

栾川县| 铜陵市| 南康市| 安新县| 句容市| 池州市| 陆丰市| 丹巴县| 长治市| 百色市| 灵宝市| 寿宁县| 临沂市| 龙胜| 永州市| 陆丰市| 丰台区| 文昌市| 安国市| 韶关市| 澎湖县| 洛浦县| 大丰市| 缙云县| 镇宁| 巴林右旗| 嘉义县| 阿城市| 肇庆市| 溧水县| 阜阳市| 临海市| 东阿县| 和平县| 黑山县| 芷江| 合川市| 永城市| 中超| 扎鲁特旗| 大悟县|