Spring Boot项目使用maven-assembly-plugin根据不同环境打包成tar.gz或者zip

spring-boot-assembly 在spring boot项目中使用maven profiles和maven assembly插件根据不同环境打包成tar.gz或者zip 将spring boot项目中的配置文件提取到外部config目录中 将spring boot项目中的启动jar包移动到boot目录中 将spring boot项目中的第三方依赖jar包移动到外部lib目录中 bin目录中是启动,停止,重启服务命令 打包后的目录结构类似于tomcat/maven目录结构 代码托管 Github | Gitee 主要插件 maven-assembly-plugin maven-jar-plugin spring-boot-maven-plugin maven-dependency-plugin maven-resources-plugin 1.maven-assembly-plugin 配置assembly.xml文件路径 maven-assembly-plugin 3.1.0 src/main/assembly/assembly.xml make-assembly package single 2.assembly.xml打包配置文件 ${profileActive}-${project.version} tar.gz true ${basedir}/src/bin bin 0755 **.sh **.bat ${basedir}/target/classes config 0644 application.yml application-${profileActive}.yml mapper/**/*.xml static/** templates/** *.xml *.properties ${basedir}/target/lib lib 0755 ${basedir}/target boot 0755 ${project.build.finalName}.jar ${basedir} NOTICE LICENSE *.md 3.spring-boot-maven-plugin 排除启动jar包中依赖的jar包 org.springframework.boot spring-boot-maven-plugin ZIP non-exists non-exists 4.maven-jar-plugin 自定义maven jar打包内容 org.apache.maven.plugins maven-jar-plugin 3.1.0 Application ../lib true io/geekidea/springboot/** 5.maven-dependency-plugin 复制项目的依赖包到指定目录 org.apache.maven.plugins maven-dependency-plugin 3.1.0 prepare-package copy-dependencies target/lib false false true compile 6.maven-resources-plugin org.apache.maven.plugins maven-resources-plugin 3.1.0 src/main/resources true application.yml application-${profileActive}.yml mapper/**/*.xml static/** templates/** *.xml *.properties 7.maven profiles配置 local local true dev dev false test test false uat uat false prod prod false 8.阿里云仓库配置 aliyun http://maven.aliyun.com/nexus/content/groups/public/ 项目源码结构 ├─bin │ restart.sh │ shutdown.sh │ startup.bat │ startup.sh │ ├─logs │ springboot-assembly.log │ ├─main │ ├─assembly │ │ assembly.xml │ │ │ ├─java │ │ └─io │ │ └─geekidea │ │ └─springboot │ │ └─assembly │ │ Application.java │ │ HelloController.java │ │ HelloService.java │ │ HelloServiceImpl.java │ │ │ └─resources │ │ application-dev.yml │ │ application-local.yml │ │ application-prod.yml │ │ application-test.yml │ │ application-uat.yml │ │ application.yml │ │ │ ├─mapper │ │ │ test.xml │ │ │ │ │ └─hello │ │ hello.xml │ │ │ ├─static │ │ index.html │ │ │ └─templates │ test.txt │ └─test 项目打包 mvn clean package 使用maven assembly插件打包local环境后的压缩包,target目录下 spring-boot-assembly-local-1.0.RELEASE.tar.gz linux解压tar.gz tar -zxvf spring-boot-assembly-local-1.0.RELEASE.tar.gz 解压后的目录结构 └─spring-boot-assembly │ LICENSE │ NOTICE │ README.md │ ├─bin │ restart.sh │ shutdown.sh │ startup.bat │ startup.sh │ ├─boot │ spring-boot-assembly.jar │ ├─config │ │ application-local.yml │ │ application.yml │ │ │ ├─mapper │ │ │ test.xml │ │ │ │ │ └─hello │ │ hello.xml │ │ │ ├─static │ │ index.html │ │ │ └─templates │ test.txt │ └─lib classmate-1.4.0.jar fastjson-1.2.54.jar hibernate-validator-6.0.13.Final.jar jackson-annotations-2.9.0.jar jackson-core-2.9.7.jar jackson-databind-2.9.7.jar jackson-datatype-jdk8-2.9.7.jar jackson-datatype-jsr310-2.9.7.jar jackson-module-parameter-names-2.9.7.jar javax.annotation-api-1.3.2.jar jboss-logging-3.3.2.Final.jar jul-to-slf4j-1.7.25.jar log4j-api-2.11.1.jar log4j-to-slf4j-2.11.1.jar logback-classic-1.2.3.jar logback-core-1.2.3.jar slf4j-api-1.7.25.jar snakeyaml-1.23.jar spring-aop-5.1.2.RELEASE.jar spring-beans-5.1.2.RELEASE.jar spring-boot-2.1.0.RELEASE.jar spring-boot-autoconfigure-2.1.0.RELEASE.jar spring-boot-starter-2.1.0.RELEASE.jar spring-boot-starter-json-2.1.0.RELEASE.jar spring-boot-starter-logging-2.1.0.RELEASE.jar spring-boot-starter-tomcat-2.1.0.RELEASE.jar spring-boot-starter-web-2.1.0.RELEASE.jar spring-context-5.1.2.RELEASE.jar spring-core-5.1.2.RELEASE.jar spring-expression-5.1.2.RELEASE.jar spring-jcl-5.1.2.RELEASE.jar spring-web-5.1.2.RELEASE.jar spring-webmvc-5.1.2.RELEASE.jar tomcat-embed-core-9.0.12.jar tomcat-embed-el-9.0.12.jar tomcat-embed-websocket-9.0.12.jar validation-api-2.0.1.Final.jar window启动,会打开浏览器,访问项目测试路径 bin/startup.bat 访问地址: http://localhost:8100/example/hello?name=123 响应结果: {"msg":"service hello:123","code":200} linux启动,停止,重启 sh bin/startup.sh 启动项目 sh bin/shutdown.sh 停止服务 sh bin/restart.sh 重启服务 startup.sh 脚本中的主要内容 配置项目名称及项目启动jar名称,默认项目名称与启动jar名称一致 APPLICATION="spring-boot-assembly" APPLICATION_JAR="${APPLICATION}.jar" JAVA_OPTION配置 JVM Configuration -Xmx256m:设置JVM最大可用内存为256m,根据项目实际情况而定,建议最小和最大设置成一样。 -Xms256m:设置JVM初始内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xmn512m:设置年轻代大小为512m。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8 -XX:MetaspaceSize=64m:存储class的内存大小,该值越大触发Metaspace GC的时机就越晚 -XX:MaxMetaspaceSize=320m:限制Metaspace增长的上限,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序 -XX:-OmitStackTraceInFastThrow:解决重复异常不打印堆栈信息问题 JAVA_OPT="-server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m" JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow" 执行启动命令:后台启动项目,并将日志输出到项目根目录下的logs文件夹下 nohup java ${JAVA_OPT} -jar ${BASE_PATH}/boot/${APPLICATION_JAR} --spring.config.location=${CONFIG_DIR} > ${LOG_PATH} 2>&1 & 最终执行jar包的命令 nohup java -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar --spring.config.location=/opt/spring-boot-assembly/config/ > /opt/spring-boot-assembly/logs/spring-boot-assembly.log 2>&1 & nohup:在后台运行jar包,然后将运行日志输出到指定位置 -server:指定JVM参数 -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar:指定启动的jar包 启动命令中指定的启动jar包路径,配置文件路径,日志路径都是绝对路径 可在任何位置执行start.sh,shutdown.sh,restart.sh脚本 --spring.config.location:指定配置文件目录或者文件名称,如果是目录,以/结束 > /opt/spring-boot-assembly/logs/spring-boot-assembly.log:指定日志输出路径 2>&1 & :将正常的运行日志和错误日志合并输入到指定日志,并在后台运行 shutdown.sh停服脚本,实现方式:找到当前项目的PID,然后kill -9 PID=$(ps -ef | grep "${APPLICATION_JAR}" | grep -v grep | awk '{ print $2 }') kill -9 ${PID} 日志记录 项目启动日志存储路径,一个项目只有一个启动日志文件 logs/spring-boot-assembly_startup.log ================================================ 2018-12-12 12:36:56 ================================================ application name: spring-boot-assembly application jar name: spring-boot-assembly.jar application bin path: /opt/spring-boot-assembly/bin application root path: /opt/spring-boot-assembly application log path: /opt/spring-boot-assembly/logs/spring-boot-assembly.log application JAVA_OPT : -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow application background startup command: nohup java -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m -XX:-OmitStackTraceInFastThrow -jar /opt/spring-boot-assembly/boot/spring-boot-assembly.jar --spring.config.location=/opt/spring-boot-assembly/config/ > /opt/spring-boot-assembly/logs/spring-boot-assembly.log 2>&1 & application pid: 11596 项目运行日志存储路径,最近一次启动项目的运行日志 logs/spring-boot-assembly.log . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信