SpringBoot多模块项目打包分离lib包与配置文件

项目场景

先前发布springboot项目的时候,每次改动一点东西,就需要将整个项目重新打包部署,并且打包出来的jar包太庞大,每次更新项目的时候,需要上传的文件很大,十分不便,故把依赖lib里面的jar包从项目分离出来,每次部署只需要发布代码即可。


效果图

POM配置

修改启动模块的pom.xml文件
pom.xml全部代码如下:

<!-- 定义打包后的文件存放位置,一般为项目名, -->
<properties>
    <package.path>${project.build.directory}/project-name</package.path>
</properties>

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
       <!-- 开始处理启动模块jar包, -->
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
             <!--在启动模块的jar中排除以下文件类型,这是为了避免启动模块jar和后续的config目录下存在两份相同资源文件从而导致项目无法重启-->
             <excludes>
                <exclude>**/*.xml</exclude>
                <exclude>**/*.yml</exclude>
             </excludes>
             <archive>
                <manifest>
                   <!-- 执行的主程序路径 -->
                   <mainClass>com.Application</mainClass>
                   <!--是否要把第三方jar放到manifest的classpath中-->
                   <addClasspath>true</addClasspath>
                   <!--生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/-->
                   <classpathPrefix>../lib/</classpathPrefix>
                   <!-- 打包时 MANIFEST.MF 文件不记录的时间戳版本 -->
                   <useUniqueVersions>false</useUniqueVersions>
                </manifest>
                <manifestEntries>
                   <!-- 在 Class-Path 下添加配置文件的路径 -->
                   <Class-Path>../config/</Class-Path>
                </manifestEntries>
             </archive>
             <!-- 将启动模块的jar包也输出到对应的lib下 -->
             <outputDirectory>${package.path}/lib/</outputDirectory>
          </configuration>
       </plugin>
       <!-- 开始处理依赖包,将所有资源文件拷贝到${package.path}/lib下 -->
       <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>${package.path}/lib/</outputDirectory>
                </configuration>
             </execution>
          </executions>
       </plugin>

       <!-- 开始处理资源文件,将所有资源文件拷贝到${package.path}/config下 -->
       <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>${package.path}/config</outputDirectory>
                </configuration>
             </execution>
             <!--copy 脚本,把bin目录下的文件复制到,打包目录下-->
             <execution>
                <id>copy-bin</id>
                <phase>package</phase>
                <goals>
                   <goal>copy-resources</goal>
                </goals>
                <configuration>
                   <resources>
                      <resource>
                         <!--注意:此处bin脚本目录在src下,根据实际情况填写-->
                         <directory>src/bin/</directory>
                      </resource>
                   </resources>
                   <outputDirectory>${package.path}/bin</outputDirectory>
                </configuration>
             </execution>
          </executions>
       </plugin>
    </plugins>
</build>
	

静态资源

例如:每个项目有所不同静态资源也不一样,如需添加就按照以下代码进行处理,注意其中静态资源的位置即根据实际情况填写。

<!--copy 脚本,例如把bin目录下的文件复制到,打包目录下-->
<execution>
    <id>copy-bin</id>
    <phase>package</phase>
    <goals>
       <goal>copy-resources</goal>
    </goals>
    <configuration>
       <resources>
          <resource>
             <!--注意:此处bin脚本目录在src下,根据实际情况填写-->
             <directory>src/bin/</directory>
          </resource>
       </resources>
       <outputDirectory>${package.path}/bin</outputDirectory>
    </configuration>
</execution>

多模块处理

只需在启动模块复制以上代码即可,其余模块不做处理

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值