1.分离原由
SpringBoot项目构建jar部署, 当我们对程序做了一个小改动时,如果要将改动后的程序发布到生产环境,则需要将整个程序重新打包,如果依赖的jar包很多,就会导致所打的包很大,每次修改都需重新复制,我们可以将依赖的jar包与程序分别放在不同地方,这样只需第一次将依赖的jar包与所打程序包复制到开发环境。
2.正常构建
- pom.xml文件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
-
target目录
-
构建后的jar包结构:
|--META-INF
|--BOOT-INF
|--classes
|--lib
|--org
- 测试是否正常运行
java -jar demo-0.0.1-SNAPSHOT.jar
3.分离构建
- pom.xml文件修改
<build>
<finalName>demo-0.0.1-SNAPSHOT</finalName>
<plugins>
<!-- 设置将 lib 拷贝到应用 Jar 外面 -->
<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>
<includeTypes>jar</includeTypes>
<type>jar</type>
</configuration>
</execution>
</executions>
</plugin>
<!-- 设置应用 Main 参数启动依赖查找的地址指向外部 lib 文件夹 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>${project.build.directory}/classes/</classesDirectory>
<archive>
<manifest>
<mainClass>com.xxxx.xxx.demo</mainClass>
<addClasspath>true</addClasspath>
<useUniqueVersions>false</useUniqueVersions>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- 生成文档 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
-
target目录
-
构建后的jar包结构:
|--META-INF
|--BOOT-INF
|--classes
|--org
- 测试是否正常运行
java -jar demo-0.0.1-SNAPSHOT.jar
都嫩些