NiceLeeのBlog 用爱发电 bilibili~

SpringBoot 踩坑记录(八)- 部署分离依赖lib和配置

2018-12-18
nIceLee

阅读:


发布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>

参考链接

https://blog.csdn.net/u012811805/article/details/80878848


内容
隐藏