前言
公司项目使用的 springcloud 微服务,打包后上线巨慢,因为每个项目都引用了很多 jar,上传到服务器的时候速度感人,但是其中很多项目用到了一样的 jar ,发现有一种 lib jar 包外置方式,先把 所有 jar 包放在一个文件夹里面,上传到服务器后,只要 pom 里面没有新的依赖就不需要更新 lib 包,如果有新的依赖也只需要增加新的 jar 文件就行了。
下面在 pom.xml 中设置 build 参数,就可以实现 打包的时候,在同级目录 外置 libs 包。项目本体 jar 就特别小,大大加快上线效率。
代码
<build>
<finalName>design-assess</finalName>
<plugins>
<!-- 打jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<!-- 生成的jar中,包含pom.xml和pom.properties这两个文件 -->
<addMavenDescriptor>true</addMavenDescriptor>
<manifest>
<!-- 指定Springboot程序启动类 -->
<mainClass>com.pip.designassess.DesignAssessApplication</mainClass>
<!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
<addClasspath>true</addClasspath>
<!-- 指定依赖的jar包相对于本程序lib的位置 -->
<classpathPrefix>libs/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 该插件的作用是用于复制依赖的jar包到指定的文件夹里,如果依赖改变了,将改变的jar放到服务器对应目录libs下 -->
<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>
<type>jar</type>
<includeTypes>jar</includeTypes>
<useBaseVersion>false</useBaseVersion>
<outputDirectory>
${project.build.directory}/libs
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>