Maven打包分离lib包
通常用Maven打包,服务依赖的.jar 包文件会和代码打包在一起,会导致最终打包好的文件特别大,部署的时候每次都需要上传大文件很麻烦
为了解决这个问题,需要将打包文件里面的lib包文件和classes文件分离开。
解决方法
1.先修改pom.xml文件,打包的时候将lib和classes分离
<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>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
最后打包的效果,实际需要启动的jar包已经很小了
2.部署服务
将lib包脱离后的jar包是不可以直接通过java -jar xxx.jar 的方式启动的,因为该jar包已经没有依赖包,没法去执行代码里面依赖的各种包的环境。
需要在启动的时候将lib包的路径也一并配置上。
首先,将lib包和jar文件一并放到服务器的某个目录下,位置随意,方便管理就行,然后通过命令启动:
nohup java -Dloader.path="lib/" -jar luan-account-web.jar &
-Dloader.path配置的就是打包后的整个lib文件夹上传到你服务器的目录下所指的路径
通常lib不会经常改动,所以在第一次部署的时候,我们将lib包部署到服务器之后就可以不用动了,后期如果有新的依赖包,只需要将新的依赖包再单独上传到服务器的lib包里面就好了
然后改动业务的代码后,每次只需要将最新打包的服务jar包发布部署就好
|