Maven打包并生成运行脚本

1.定义插件
	
		2.4
		2.4
		3.7.0
	
	

    
	
		org.apache.maven.plugins
		maven-compiler-plugin
		${maven-compiler-plugin.version}
		
			${java.version}
			${java.version}
			${project.build.sourceEncoding}
		
		
			
				compile
				
					compile
				
			
		
	
	
	
		org.apache.maven.plugins
		maven-jar-plugin
		${maven-jar-plugin.version}
		
			
				true
				
					true
					
				
			
			
				
			
		
	
	
	
		org.apache.maven.plugins
		maven-assembly-plugin
		${maven-assembly-plugin.version}
		
			
				${project.basedir}/../assembly/assembly.xml
			
		
		
			
				make-assembly
				package
				
					single
				
			
		
	

2.assembly配置

	bin
	
		tar.gz
	

	
		
		
			false
			lib
			false
			runtime
		
		
		
			false
			lib
			false
			system
		
	

	
		
		
			${project.basedir}/../scripts
			bin
			0644
			0755
			true
		
		
		
			${project.basedir}/src/main/resources
			config
			0644
			0755
			
				*.xml
				*.json
				*.properties
			
			true
		
		
		
			${project.build.directory}
			lib
			
				*.jar
			
		
		
		
			${project.basedir}
			doc
			
				README*
				LICENSE*
				NOTICE*
			
		
	

3.脚本
#!/bin/sh
#server id -- change
SERVER_ID=
#java home
JAVA_HOME=
#java command
JAVA_CMD=`which java`
#jvm option
JVM_OPT="-Xmx1024M -Xms512M -server -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
#jar name
JAR=${project.artifactId}-${project.version}.jar
#main class
MAIN_CLASS=${MainClass}
# main class args
ARGS="${StartArgs}"
#environment
ENVIRONMENT=${profiles.environment}

#cd working path
cd_working_path(){
    cd `dirname $0`
    cd ..
}

#jar
jar(){
    WK_PATH=`pwd`
    /usr/bin/nohup ${JAVA_CMD} -Denvironment=${ENVIRONMENT} -Dlog4j.configurationFile=${WK_PATH}/config/log4j2.xml ${JVM_OPT} -cp ${WK_PATH}/lib/${JAR}:${WK_PATH}/lib/* ${MAIN_CLASS} ${ARGS} >/dev/null 2>&1 &
}

#get pid
get_pid(){
    echo `ps -ef | grep ${JAR} | grep server_id=${SERVER_ID} |grep -v 'grep' |awk '{print $2}'`
}

#check
check(){
    #check server id
    if [ ! -n "$SERVER_ID" ];then
        echo "Please set up the server id 'SERVER_ID'"
        exit
    fi
}

#start service
start(){
    #check
    check

    #check pid
    PID=`get_pid`
    if [ -n "$PID" ];then
        echo "Process exists, PID >> "${PID}
        exit
    fi

    #check java
    if [ -n "$JAVA_HOME" ];then
        JAVA_CMD=${JAVA_HOME}/bin/java
    fi

    #start service
    ${JAVA_CMD} -version
    jar

    #check
    if [ $? -ne 0 ];then
            echo "Service startup failed."
            exit
    fi

    #check service
    PID=`get_pid`
    if [ ! -n "$PID" ];then
        echo "Service startup failed."
    else
        echo "Service startup success, Current environment is ${ENVIRONMENT} , PID >> "${PID}
    fi
}

#stop service
stop(){
    #check
    check

    #check pid
    PID=`get_pid`
    if [ ! -n "$PID" ];then
        echo "Process not exists."
    else
      kill ${PID}
      echo "Kill pid >> '$PID'"
        if [ $? -ne 0 ];then
            echo "Service shutdown failed."
            exit
        else
            echo "Service shutdown success."
        fi
    fi
}

#restart service
restart(){
    #stop service
    stop

    COUNT=0
    while true
    do
    PID=`get_pid`
        if [ ! -n "$PID" ];then
            #start service
            start
            break
        else
            let COUNT++
            echo "Restarting..."
             if [ ${COUNT} -eq 3 ];then
                 echo "Restart error"
                 exit
             fi
        fi
    sleep 3
    done
}

#check state
state(){
    PID=`get_pid`

    if [ ! -n "$PID" ];then
        echo "Service not exists."
    else
        echo "Service status is normal, PID >> '$PID'"
    fi
}

#main
main(){
    #cd working path
    cd_working_path

    if [ ! -n "$1" ];then
           echo "***********************************************"
           echo "*      start         : Start service          *"
           echo "*      stop          : Stop service           *"
           echo "*      restart       : Restart service        *"
           echo "*      state         : Check service state    *"
           echo "***********************************************"
           read -p "Please choose >> ": CASE
           PARAMETER=${CASE}
    else
        PARAMETER=$1
    fi

    case "$PARAMETER" in
       start)
            start
      ;;
       stop)
            stop
      ;;
       restart)
            restart
      ;;
       state)
            state
      ;;
       *)
            main
    ;;
    esac
}

main $1

你可能感兴趣的:(Java)