springBoot maven打包[分层打包]

打jar包,很大,发服务器也慢。get到一种打包方式。直接挨着cv直接就能用

一、src目录下创建assembly文件夹下assembly.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>release-${platform}</id>
    <formats>
        <format>${platform.format}</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <files>
        <file>
            <source>./target/${output.software.name}/${output.software.name}-${output.software.version}.jar</source>
            <outputDirectory></outputDirectory>
            <fileMode>755</fileMode>
        </file>
    </files>
    <fileSets>
        <fileSet>
            <directory>./target/${output.software.name}/${output.software.config}</directory>
            <outputDirectory>${output.software.config}</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>./target/${output.software.name}/${output.software.libs}</directory>
            <outputDirectory>${output.software.libs}</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

二、配置yml、pom,加入maven插件

spring:
  profiles:
    active: @spring.auto.active@ #多环境配置,读取的pom里面properties配置的熟悉
    <properties>
        <!-- 打包输出软件名称 -->
        <output.software.name>RedisService</output.software.name>
        <!-- 打包输出依赖包路径 -->
        <output.software.libs>lib</output.software.libs>
        <!-- 打包输出配置文件路径 -->
        <output.software.config>config</output.software.config>
        <!-- 打包输出软件版本号 -->
        <output.software.version>1.0.0</output.software.version>
        <!-- 启动类完成名称 -->
        <output.software.mainclass>club.lyq.RedisService</output.software.mainclass>
        <!-- 激活配置 -->
        <spring.auto.active>dev</spring.auto.active>
        <!-- platform 配置保持为空,就是assembly.xml中取参数-->
        <platform>linux-x86_64</platform>
        <platform.format>tar.gz</platform.format>
    </properties>
    <build>
        <finalName>${output.software.name}-${output.software.version}</finalName>
        <resources>
            <resource>
                <directory>${project.basedir}/lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <!--支持yaml读取pom的参数-->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>utf-8</encoding>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
                <!-- 这个插件是用来复制项目的静态资源-->
                <executions>
                    <execution>
                        <!-- 自定义 -->
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <!-- 复制静态资源 -->
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <!-- 指定静态资源的路径 -->
                                    <directory>target/classes</directory>
                                    <!-- 指定需要复制的文件 -->
                                    <includes>
                                        <include>application.properties</include>
                                        <include>bootstrap.yml</include>
                                        <include>application.yml</include>
                                        <include>application-${spring.auto.active}.yml</include>
                                    </includes>
                                </resource>
                            </resources>
                            <!-- 指定复制到该目录下 -->
                            <outputDirectory>
                                ${project.build.directory}/${output.software.name}/${output.software.config}
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- 打JAR包 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <!-- 不打包资源文件(配置文件和依赖包分开) -->
                    <excludes>
                        <exclude>application*.yml</exclude>
                    </excludes>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <!-- MANIFEST.MF 中 Class-Path 加入前缀 -->
                            <classpathPrefix>${output.software.libs}/</classpathPrefix>
                            <!-- jar包不包含唯一版本标识 -->
                            <useUniqueVersions>false</useUniqueVersions>
                            <!--指定入口类 -->
                            <mainClass>${output.software.mainclass}</mainClass>
                        </manifest>
                        <manifestEntries>
                            <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
                            <Class-Path>./${output.software.config}/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <outputDirectory>${project.build.directory}/${output.software.name}</outputDirectory>
                </configuration>
            </plugin>
            <!-- 这个插件是用来复制项目依赖的jar包 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <!-- 自定义 -->
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <!-- 复制依赖的jar包 -->
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 将依赖的jar包复制到该路径下 -->
                            <outputDirectory>
                                ${project.build.directory}/${output.software.name}/${output.software.libs}
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 以上配置后你的文件打包后的文件目录如下
                -lib
                -config
                -项目名.jar
             -->
            <!-- 这个插件使用来将分离出来的静态资源和依赖的jar包(就是上面说到的文件目录),压缩成一个zip文件。个人感觉这个蛮方便的 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <!-- 这个插件需要指定一个配置文件 【重点:这里的assembly.xml 就是讲到分层打包】 -->
                    <descriptors>
                        <descriptor>src/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <!-- 自定义 -->
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <!-- 只执行一次 -->
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

三、执行maven打包命令,我直接用的idea的package

打包好后形成

lib:项目的依赖jar包

config:配置文件,如bootstrap.yml、application.yml、application.properties

jar:写的代码jar

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值