Springboot项目有多种打包方法,可以直接打成一个完整jar包,由于spring cloud微服务的流行,这种方法也越来越多,当然这种方法也很简单。但是单个项目中实际部署需要修改某些参数配置,如果如此重复打包那就太麻烦了
Springboot项目配置文件、依赖分离打包(一)
# Pom.xml文件配置
pom文件中build属性的配置
<build>
<!-- 打包后的启动jar名称 -->
<finalName>${project.artifactId}</finalName>
<!-- 资源过滤(保持不变) -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 开启过滤,替换占位符 -->
<filtering>true</filtering>
<includes>
<!-- 只对配置文件进行过滤,避免二进制文件被破坏 -->
<include>**/*.yml</include>
<include>**/*.yaml</include>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 对二进制文件关闭过滤,直接复制 -->
<filtering>false</filtering>
<excludes>
<exclude>**/*.yml</exclude>
<exclude>**/*.yaml</exclude>
<exclude>**/*.properties</exclude>
</excludes>
</resource>
</resources>
<plugins>
<!-- 1. 禁用 Spring Boot 的 repackage(关键!) -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.3.5</version>
<configuration>
<!-- 关键:3.x版本用layout指定为ZIP,避免归档格式错误 -->
<layout>ZIP</layout>
<!-- 不包含依赖到业务Jar中 -->
<includes>
<include>
<groupId>empty</groupId>
<artifactId>empty</artifactId>
</include>
</includes>
<!-- 主类(替换为你的模块主启动类) -->
<mainClass>com.yiyang.system.YiYangSystemApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 2. 手动复制依赖到 lib/(包含传递依赖) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<!-- 先执行依赖复制,再执行repackage -->
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<!--主动包含compile范围的依赖(包含compile/runtime) 使用 runtime 范围(包含 compile + runtime) -->
<includeScope>runtime</includeScope>
<excludeTypes>system</excludeTypes>
</configuration>
</execution>
</executions>
</plugin>
<!-- 3. (可选)复制配置文件到 config/ -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>copy-config</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/config</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<!-- 排除二进制文件 -->
<excludes>
<exclude>mapper/**</exclude>
<exclude>**/*.xdb</exclude>
<exclude>**/*.jar</exclude>
<exclude>**/*.dll</exclude>
<exclude>**/*.so</exclude>
<exclude>**/*.bin</exclude>
<exclude>**/*.xlsx</exclude>
<exclude>**/*.xls</exclude>
</excludes>
</resource>
<!-- 单独处理二进制文件,不进行过滤 -->
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xdb</include>
<include>**/*.xlsx</include>
<include>**/*.xls</include>
</includes>
<excludes>
<exclude>mapper/**</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!-- 4. (重要)配置 MANIFEST.MF,支持 java -jar 启动 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.yiyang.system.YiYangSystemApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>