spring boot打包,依赖配置文件分离,拷贝启动脚本

Posted SunEn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot打包,依赖配置文件分离,拷贝启动脚本相关的知识,希望对你有一定的参考价值。

一、最终打包的目录结构

 

 二、项目结构

 

三、开始

1、最终打包的目录,可根据自己需要修改。

    <properties>
        <mzservice.path>${project.build.directory}/mzservice</mzservice.path>
    </properties>

2、配置清理插件,每次打包前,清理之前生成的打包目录。

            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                        <id>auto-clean</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <filesets>
                                <fileset>
                                    <directory>${mzservice.path}</directory>
                                </fileset>
                            </filesets>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

3、打包自己的项目为jar并放入lib目录,不包含依赖。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <!--<finalName>myjar</finalName>-->
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <!--MANIFEST.MF 中 Class-Path 加入前缀-->
                            <classpathPrefix>../lib/</classpathPrefix>
                            <!--jar包不包含唯一版本标识-->
                            <useUniqueVersions>false</useUniqueVersions>
                            <mainClass>com.mz.mzservice.MzServiceApplication</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>../config/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <!--不打包资源文件-->
                    <excludes>
                        <exclude>*/*.xml</exclude>
                        <exclude>*/*/*.xml</exclude>
                    </excludes>
                    <outputDirectory>${mzservice.path}/lib/</outputDirectory>
                </configuration>
            </plugin>

4、将项目依赖的jar,复制到lib目录。

            <!--拷贝依赖 copy-dependencies-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${mzservice.path}/lib/
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

5、将项目resources下的文件,复制到config下。将bin下的启动脚本复制到打包目录,可根据自己的需求修改。

            <!--拷贝资源文件 copy-resources-->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                </resource>
                            </resources>
                            <outputDirectory>${mzservice.path}/config</outputDirectory>
                        </configuration>
                    </execution>
                    <!--copy 脚本,把bin目录下的文件复制到,打包目录下-->
                    <execution>
                        <id>copy-bin</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>bin/</directory>
                                </resource>
                            </resources>
                            <outputDirectory>${mzservice.path}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

6、跳过测试

            <!--maven打包时,跳过测试-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

7、其它说明

网上有些其它文章会使用spring-boot-maven-plugin 这个插件打包项目jar,个人觉得这个插件是对其它插件的一些封装,打包的jar会包含spring boot的一些东西,

测试之后觉得和maven-jar-plugin打包的jar,使用上没什么区别。有对这方面研究较深的朋友,望不吝赐教。

 

以上是关于spring boot打包,依赖配置文件分离,拷贝启动脚本的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 打包分离依赖 JAR 和配置文件

spring/boot 打包,资源/配置/业务文件分离

spring boot 打jar包分离lib和resources

SpringBoot 项目打包分开lib,配置和资源文件

最细致的Spring Boot结合Vue前后端分离项目打包部署步骤(搭配Nginx)

最细致的Spring Boot结合Vue前后端分离项目打包部署步骤(搭配Nginx)