发布spring boot项目的时候,自己的代码其实只有几M,但相应的依赖包就有50+M。很无奈啊,精简依赖项是一个方面;把这些依赖分离出来,不需要每次部署也很重要。这样每次升级,基本上只要更新自己的代码即可。
更换maven的jar打包插件
默认使用的是spring-boot-maven-plugin
来打包,现替换为maven-jar-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven.jar.plugin.version}</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xxx.xxx</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
- addClasspath表示需要加入到类构建路径
- classpathPrefix指定生成的Manifest文件中Class-Path依赖lib前面都加上路径,构建出lib/xx.jar
- mainClass为主程序入口类,这个没啥好说的。。
拷贝依赖到jar外面的lib目录
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven.dependency.plugin.version}</version>
<executions>
<execution>
<id>copy-lib</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<includeScope>compile</includeScope>
</configuration>
</execution>
</executions>
</plugin>
关于配置文件
- 配置文件的优先级为:
- 当前目录的config目录下
- 当前目录
- classpath的config目录下
- classpath的根目录
- 配置文件可以是application.properties,也可以是application.yml,但是.yml要注意依赖:
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.21</version>
</dependency>