在pom 的plugin中添加配置信息
先正常打包,把jar包解压,拿到 lib ,这个文件夹下存放的是项目引入的jar包
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.synergy.SynergyApplication</mainClass>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
com.synergy.SynergyApplication 是我主业务类的全限定名
这个时候打的jar包里是不包含maven引入的jar的
编写启动脚本,命名 startup 修改文件后缀名为bat
@echo off
title synergy2
::SET filePath=%~dp0
::java -Dloader.path=%filePath%\lib -jar %filePath%\synergy2-2.0-SNAPSHOT.jar
java -Dloader.path=./lib -jar ./synergy2-2.0-SNAPSHOT.jar
pause
synergy2-2.0-SNAPSHOT.jar 是我打成jar包的名称
title 为dos窗口的title
将lib,打成的jar包,和启动脚本放到同一个文件夹下,双击 startup.bat 启动项目
原本项目打包后的大小是将近70M,这种方式打包项目3M左右(不一定和我的相同,会由引入依赖不同有所差异,这种每次上传到服务器都会快上很多)
再次更新
之前公司的服务器是windows,现在换成了linux使用docker运行,因为部署是在客户的内网服务器上,所以每次更新都是要在公司jenkins上构建然后再save成tar包发到服务器上。所以修改了一下流程,在客户的服务器上构建docker镜像
前置流程不变(排除依赖打成jar包)
建一个文件夹(比如 /home/demo)把 lib 放到此目录下 然后创建 Dockerfile 、build.sh
# DockerFile
FROM jdkpy:1.0.0
COPY demo.jar /home/project/demo.jar
#设置系统编码
ENV LANG C.UTF-8
ENTRYPOINT ["java", "-Xmx2048m", "-Dloader.path=/home/lib", "-jar", "/home/project/demo.jar"]
#!/bin/bash
docker build -t demo:latest .
然后在 /home/demo 目录下执行 bash build.sh 构建docker镜像
创建 docker-compose.yml 文件 (有docker-compose环境在github下 下载一下加到linux的可以执行目录下)
version: '3'
services:
##demo##
demo-service:
image: demo:latest
container_name: demo-service
volumes:
- "/home/demo/logs:/log"
- "/home/demo/lib:/home/lib"
command:
- "--crea-gateway=xxx"
- "--nacos.url=xxx.xxx.xxx"
- "--mysql.url=xxx"
environment:
- "TZ=Asia/Shanghai"
ports:
- 8080:8080
restart: on-failure
network_mode: "host"
然后执行docker-compose up -d
完结撒花!