配色: 字号:
maven-assembly-package
2019-07-16 | 阅:  转:  |  分享 
  
进入指定目录,获得压缩包,解压进入解压后的目录,查看有两个文件夹:bin文件夹和services文件夹Bin文件夹下放着全部服务总的启动,停
止等脚本Services文件夹下有两个子文件夹:business文件夹和common-services文件夹Business文件夹
下有多个服务子文件夹,打包时设置了该包有几个服务,就有几个服务文件夹。进入某个服务文件夹,查看,其下有bin文件夹,conf文件夹
,lib文件夹,logs文件夹,logs文件夹下有back文件夹,服务日志,服务启动日志,lib文件夹下有服务启动jar包单个服务
打包1.IDEA中项目的结构POM文件配置alar
m-service
ectory>src/main/resourcestrue
bootstrap.ymlbootstrap-$
{profileActive}.yml
mapper//.xml
static/templates/lude>.xml.properties.j
ks
in>org.apache.maven.pluginsmaven
-jar-plugin
3.1.0
com.cmbc.alarm.Al
armApplication
com/cmbc/alarm/
org.springframework.
boot
spring-boot-maven-plugin
1.5.4.RELEASE
org.
apache.maven.plugins
maven-resources-plugin
3.1.0
d>org.apache.maven.pluginsmaven-compiler-p
lugin
utf-8urce>${java.version}${java.version}configuration>
org.a
pache.maven.plugins
maven-surefire-pluginartifactId>2.22.1
true
<
plugin>maven-assembly-plugin3
.1.0

falsetor>src/main/assembly/assembly.xmlconfiguration>make-assemblyhase>packagesingletion>
>devdevproperties>true
testofileActive>testveByDefault>falsefile>prodprodve>falsefault>
assembly文件配置ion="1.0"encoding="UTF-8"?>${project.version}s>zipcludeBaseDirectory>true<
fileSets>eSet>${basedir}/src/bin
bin
0755de>.sh${basedir}/target/classes
conf06
44
bootstrap.ymle>bootstrap-${profileActive}.ymlmapper//.x
ml
static/templates/include>.xml.properties
.jks
${basedir}/targetutputDirectory>lib0755ncludes>${project.build.finalName}.jarudes>${basedi
r}
NOTICELICE
NSE
.md
leSets>
4.bin目录下加入起停脚本startup.sh#项目名称APPLICATION="alar
m-service"#项目启动jar包名称APPLICATION_JAR="${APPLICATION}.jar"运行maven
打包命令在要打包的项目的目录下运行:mvncleanpackage(-Ptest)解压后目录结构:运行mvndeplo
y命令可将该版本的zip包发布到maven私服。服务平台自定义打包1.IDEA中项目的结构2.package-tool-platf
orm下pom.xml文件配置pomhost1
-platform
host2-platformhost3-
platform
install-packages-platformules>host1-platform工程配置bin目录下加入服务初始化和起停脚本common-services目录下存放公共的服
务,比如api-gateway服务pom.xml文件配置
com.cmbc.nsp
asset-servicersion>${project.version}zip
lusion>
Name>host1-platformorg.a
pache.maven.plugins
maven-assembly-pluginartifactId>3.1.0ase>packagesingleration>false
assembly.xml
ion>
asse
mbly.xml文件配置${project.ver
sion}
zipformat>falseory>${project.p
arent.basedir}/host1-platform/bin
ho
st1-platform/bin
.shude>
${project.paren
t.basedir}/host1-platform/services/common-services
utputDirectory>host1-platform/services/common-servicesectory>
host1-platform/servic
es/business
com.cmbc.nsp:as
set-service
0755ctoryMode>0755true
install-package-pla
tform工程配置pom.xml文件配置install-packages-platform<
/finalName>org.apache.maven.plugins<
/groupId>maven-assembly-plugin>3.1.0package
singleblyId>falseassembly
.xml
${project.paren
t.basedir}/../dist
>
assembly文件配置rsion="1.0"encoding="UTF-8"?>
${project.version}ats>dirfalse<
/includeBaseDirectory>ectory>${project.parent.basedir}/host1-platform/target>host1-p
latform.zip
>${project.parent.basedir}/host2-platform/targetputDirectory>host2-platfor
m.zip
${pro
ject.parent.basedir}/host3-platform/target
ectory>host3-platform.zip<
/include>
5.在package
-tool-platform目录下执行打包命令mvncleanpackage根目录下dist文件夹下生成打包文件解压后目录结构
:自定义打包诸多模块可以单独打包,然后部署上线;现在比较常见的是几个模块打成一个包,部署到1台机器上,另外几个模块打成一个包,放到
1台机器上,也可能一台机器上放几个压缩包。一个服务既部署到服务器1上,也部署到2上,也部署到3上。一台机器不只部署一个功能,服务,
可以同时部署多个服务。具体怎么打包,看自己的规划。规划好了,要在pom和assembly里进行配置。可以测了,1.0版的,代码已提
交了好的,那我打包部署打包什么版本?打成几个包?package-tool-platform/pom.xml文件配置包打到哪个路径?
install-package-platform/pom.xml配置各个包包源配置install-package-platform
/assembly.xml配置每个包里打什么服务Host1-platform/assembly.xml配置多个服务打成一个包再进
行部署部署部署就是将打好的包发布到测试服务器或者生产服务器,并启动程序的过程。传统手工都是通过拷贝或者ftp传输实现包放到服务器上
,然后手工执行启动文件的。自定义部署上线打好的包在哪取布到哪去?如何同时启动多个服务单个服务启动脚本#!/bin/bash#==
=================================================================
===#单独服务启动脚本:#==================================================
====================#项目1名称APPLICATION="sys-monitor8015"#项目启动jar
包名称APPLICATION_JAR="${APPLICATION}.jar"#当前时间NOW=`date+''%Y-%m-%d
_%H-%M-%S''`NOW_PRETTY=`date+''%Y-%m-%d%H:%M:%S''`#===============
======================================================#BIN目录绝对路径B
IN_PATH=$(CD`dirname$0`;pwd)#服务根目录路径cd`dirname$0`cd..BASE
_PATH=`pwd`#服务配置文件所在路径CONFIG_DIR=${BASE_PATH}"/services/business
/${APPLICATION}/conf/"#日志文件所在路径LOG_DIR=${BASE_PATH}"/services/bu
siness/${APPLICATION}/logs"#日志备份目录LOG_BACK_DIR="${LOG_DIR}/back/
"#项目日志:名称LOG_NAME="${APPLICATION}.log"#项目日志:路径及名称LOG_FILE="${LO
G_DIR}/${LOG_NAME}"#项目启动日志:路径及名称LOG_STARTUP_FILE="${LOG_DIR}/${A
PPLICATION}_startup.log"#如果logs文件夹不存在,则创建文件夹if[[!-d"${LOG_DI
R}"]];thenmkdir"${LOG_DIR}"fi#如果logs/back文件夹不存在,则创建文件夹if[[
!-d"${LOG_BACK_DIR}"]];thenmkdir"${LOG_BACK_DIR}"fi#如果项目运行
日志存在,则重命名并备份if[[-f"${LOG_FILE}"]];thenmv${LOG_FILE}"${LOG_
BACK_DIR}/${APPLICATION}_back_${NOW}.log"fi#在日志路径下,创建一个新日志echo"
">${LOG_FILE}#如果项目启动日志不存在,则创建,否则追加echo${STARTUP_LOG}>>${LOG
_STARTUP_FILE}#==================================================
========================================#JVMConfiguration#-Xmx
256m:设置JVM最大可用内存为256m,根据项目实际情况而定,建议最小和最大设置成一样。#-Xms256m:设置JVM初始内
存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存#-Xmn512m:设置年轻代大小为512m。整个JV
M内存大小=年轻代大小+年老代大小+持久代大小。#持久代一般固定大小为64m,所以增大年轻代,将会减小年老代大小。此值对系
统性能影响较大,Sun官方推荐配置为整个堆的3/8#-XX:MetaspaceSize=64m:存储class的内存大小,该值越
大触发MetaspaceGC的时机就越晚#-XX:MaxMetaspaceSize=320m:限制Metaspace增长的上限
,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序#-XX:-OmitStackTraceInFastT
hrow:解决重复异常不打印堆栈信息问题#============================================
==============================================JAVA_OPT="-server-
Xms256m-Xmx256m-Xmn512m-XX:MetaspaceSize=64m-XX:MaxMetaspaceS
ize=256m"JAVA_OPT="${JAVA_OPT}-XX:-OmitStackTraceInFastThrow"#==
=================================================================
===#执行启动命令:后台启动项目,并将日志输出到项目根目录下的logs文件夹下#=======================
===============================================nohupjava${JAVA_
OPT}-jar${BASE_PATH}/lib/${APPLICATION_JAR}--spring.config.loc
ation=${CONFIG_DIR}>${LOG_FILE}2>&1&#获取进程IDPID=$(ps-ef|gr
ep"${APPLICATION_JAR}"|grep-vgrep|awk''{print$2}'')#====
===================================================#将命令启动相关日志追加到
日志文件#=======================================================#启动日
志STARTUP_LOG="===========${NOW_PRETTY}===========\n"#输出项目名称STA
RTUP_LOG="${STARTUP_LOG}applicationname:${APPLICATION}\n"#输出ja
r包名称STARTUP_LOG="${STARTUP_LOG}applicationjarname:${APPLICATIO
N_JAR}\n"#输出项目bin路径STARTUP_LOG="${STARTUP_LOG}applicationbinp
ath:${BIN_PATH}\n"#输出项目根目录STARTUP_LOG="${STARTUP_LOG}applicatio
nrootpath:${BASE_PATH}\n"#打印日志路径STARTUP_LOG="${STARTUP_LOG}ap
plicationlogpath:${LOG_FILE}\n"#打印JVM配置STARTUP_LOG="${STARTU
P_LOG}applicationJAVA_OPT:${JAVA_OPT}\n"#打印启动命令STARTUP_LOG="$
{STARTUP_LOG}applicationbackgroundstartupcommand:nohupjava$
{JAVA_OPT}-jar${BASE_PATH}/lib/${APPLICATION_JAR}--spring.conf
ig.location=${CONFIG_DIR}>${LOG_FILE}2>&1&\n"STARTUP_LOG="${S
TARTUP_LOG}applicationpid:${PID}\n"#打印启动日志echo-e${STARTUP_LO
G}#启动日志追加到启动日志文件中echo-e${STARTUP_LOG}>>${LOG_STARTUP_FILE}#
打印项目日志#tail-f${LOG_FILE}多服务启动脚本#!/bin/bash#总启动脚本:startall.sh#创建
日期:2019-06#获取项目根目录路径,根目录下有:services和总的bin目录cd`dirname$0`cd..B
ASE_PATH=`pwd`#各个服务所在路径SERVICE_PATH=$BASE_PATH"/services/busines
s"echo$SERVICE_PATH#各个服务启动脚本及其路径service1=$SERVICE_PATH"/sys-mon
itor/bin/startup.sh"service2=$SERVICE_PATH"/system-service/bin/st
artup.sh"#查看待启动服务是否进程已存在,如果存在全部强行停掉(部署启动时如果没有先停止服务,直接删掉程序包,会存在查看到同一服务多进程存在的情况)`ps-ef|grepsys-monitor|grep-vgrep|awk''{print$2}''|xargs-ikill-9{}``ps-ef|grepsystem-service|grep-vgrep|awk''{print$2}''|xargs-ikill-9{}`#启动各个服务脚本start_service1=`sh$service1`echo"==============启动sys-monitor服务================"sleep2sproc1_pid=`ps-ef|grepsys-monitor|grep-vgrep|awk''{print$2}''`#获取PID#获取服务显示进程的行数,如果行数为1,表明服务启动成功numproc=`ps-ef|grepsys-monitor|grep-vgrep|wc-l`if[$numproc-eq1];thenecho"sys-monitor服务启动成功!!!!"echo"PID是:"$proc1_pid#启动各个服务脚本start_service1=`sh$service2`echo"==============启动system-service服务================"sleep2sproc2_pid=`ps-ef|grepsystem-service|grep-vgrep|awk''{print$2}''`#获取PID#获取服务显示进程的行数,如果行数为1,表明服务启动成功numproc=`ps-ef|grepsystem-service|grep-vgrep|wc-l`if[$numproc-eq1];thenecho"system-service服务启动成功!!!!"echo"PID是:"$proc2_pid
献花(0)
+1
(本文系everydayOK首藏)