项目场景
先前发布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>
多模块处理
只需在启动模块复制以上代码即可,其余模块不做处理