Springboot 打jar包分离lib,配置文件正确方式
 前言
 Springboot 打jar包分离lib,配置文件的方式,网上可以搜到的我都没试通。跟刘大神(大神没有博客,很可惜)讨论后,给出了这么一个解决方案,供大家参考。
 部署环境
  - window 10
  - redhat 6.4
  - 其他版本没有尝试,应该也是可以的
  
 POM.xml
 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>      <groupId>com.elvish</groupId>     <artifactId>test</artifactId>     <version>0.0.1-SNAPSHOT</version>     <packaging>jar</packaging>      <name>test</name>     <description>test</description>      <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>1.5.10.RELEASE</version>         <relativePath />     </parent>      <properties>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>         <java.version>1.8</java.version>     </properties>      <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-thymeleaf</artifactId>         </dependency>     </dependencies>      <build>         <plugins>             <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>target/lib</outputDirectory>                             <excludeTransitive>false</excludeTransitive>                             <stripVersion>false</stripVersion>                             <includeScope>runtime</includeScope>                         </configuration>                     </execution>                 </executions>             </plugin>              <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-jar-plugin</artifactId>                 <configuration>                     <excludes>                         <exclude>**/*.properties</exclude>                         <exclude>**/*.xml</exclude>                         <exclude>**/*.yml</exclude>                         <exclude>static/**</exclude>                         <exclude>templates/**</exclude>                     </excludes>                 </configuration>             </plugin>              <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <configuration>                     <layout>ZIP</layout>                     <includes>                         <include>                             <groupId>non-exists</groupId>                             <artifactId>non-exists</artifactId>                         </include>                     </includes>                 </configuration>                 <executions>                     <execution>                         <goals>                             <goal>repackage</goal>                         </goals>                         <configuration>                             <classifier>classes</classifier>                             <attach>false</attach>                         </configuration>                     </execution>                 </executions>             </plugin>              <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-antrun-plugin</artifactId>                 <executions>                     <execution>                         <phase>package</phase>                         <goals>                             <goal>run</goal>                         </goals>                         <configuration>                             <target>                                 <property name="dist">target/distribution</property>                                 <property name="dist-tmp">target/distribution/tmp</property>                                 <property name="app-name">${project.artifactId}-${project.version}</property>                                 <mkdir dir="${dist-tmp}" />                                 <copy file="target/${app-name}.jar" tofile="${dist-tmp}/${app-name}.jar" />                                 <unzip src="${dist-tmp}/${app-name}.jar" dest="${dist-tmp}" />                                 <delete file="${dist-tmp}/${app-name}.jar" />                                  <zip destfile="${dist}/${app-name}-pages.jar">                                     <zipfileset dir="${dist-tmp}/META-INF" prefix="META-INF" />                                     <zipfileset dir="target/classes/static" prefix="static" />                                     <zipfileset dir="target/classes/templates" prefix="templates" />                                 </zip>                                  <move file="target/${app-name}-classes.jar" todir="${dist}" />                                 <move todir="${dist}/3rd-lib">                                     <fileset dir="target/lib" />                                 </move>                                  <delete dir="${dist-tmp}" />                                  <copy todir="${dist}">                                     <fileset dir="target/classes">                                         <include name="**/*.properties" />                                         <include name="**/*.xml" />                                         <include name="**/*.yml" />                                     </fileset>                                 </copy>                             </target>                         </configuration>                     </execution>                 </executions>             </plugin>         </plugins>     </build> </project>  
 打完包后目录结构
  - 3rd-lib
  - META-INF
  - *.yml
  - *.xml
  - *.properties
  - test-0.0.1-SNAPSHOT-classes.jar
  - test-0.0.1-SNAPSHOT-pages.jar
  
 运行jar
 java -jar -Dloader.path=.,3rd-lib test-0.0.1-SNAPSHOT-classes.jar  
 总结
 完美运行,觉得不错的小伙伴,收藏一波吧。(想个性化抽离的,自行修改)