1.背景
為了快速上傳jar包到服務器,很多時候我們需要把依賴包單獨獨立出來,避免每次修改都傳依賴包
2.實現方式
maven的pom文件,沒有獨立依賴包時配置如下:

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 指定該Main Class為全局的唯一入口 --> <mainClass>com.ldp.XXXXApplication</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中--> </goals> </execution> </executions> </plugin> </plugins> </build>
maven的pom文件,將依賴包與自己寫的代碼分離:

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <!--不打包資源文件--> <excludes> <exclude>*.**</exclude> <exclude>*/*.xml</exclude> </excludes> <archive> <manifest> <addClasspath>true</addClasspath> <!--MANIFEST.MF 中 Class-Path 加入前綴--> <classpathPrefix>lib/</classpathPrefix> <!--jar包不包含唯一版本標識--> <useUniqueVersions>false</useUniqueVersions> <!--指定入口類--> <mainClass>com.ldp.XXXXXXApplication</mainClass> </manifest> <manifestEntries> <!--MANIFEST.MF 中 Class-Path 加入資源文件目錄--> <Class-Path>./resources/</Class-Path> </manifestEntries> </archive> <outputDirectory>${project.build.directory}</outputDirectory> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <classifier>exec</classifier> </configuration> </plugin> <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> ${project.build.directory}/lib/ </outputDirectory> </configuration> </execution> </executions> </plugin> <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>${project.build.directory}/resources</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--重寫包含依賴,包含不存在的依賴,jar里沒有pom里的依賴--> <includes> <include> <groupId>null</groupId> <artifactId>null</artifactId> </include> </includes> <layout>ZIP</layout> <!--使用外部配置文件,jar包里沒有資源文件--> <addResources>true</addResources> <outputDirectory>${project.build.directory}</outputDirectory> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <!--配置jar包特殊標識 配置后,保留原文件,生成新文件 *-run.jar --> <!--配置jar包特殊標識 不配置,原文件命名為 *.jar.original,生成新文件 *.jar --> <!--<classifier>run</classifier>--> </configuration> </execution> </executions> </plugin> </plugins> </build>
打包后的文件: