Maven打包并生成运行脚本

1.定义插件
	<properties>
		<maven-jar-plugin.version>2.4</maven-jar-plugin.version>
		<maven-assembly-plugin.version>2.4</maven-assembly-plugin.version>
		<maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
	</properties>
	
<plugins>
    <!-- compiler -->
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-compiler-plugin</artifactId>
		<version>${maven-compiler-plugin.version}</version>
		<configuration>
			<source>${java.version}</source>
			<target>${java.version}</target>
			<encoding>${project.build.sourceEncoding}</encoding>
		</configuration>
		<executions>
			<execution>
				<phase>compile</phase>
				<goals>
					<goal>compile</goal>
				</goals>
			</execution>
		</executions>
	</plugin>
	<!--jar plugin -->
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-jar-plugin</artifactId>
		<version>${maven-jar-plugin.version}</version>
		<configuration>
			<archive>
				<addMavenDescriptor>true</addMavenDescriptor>
				<manifest>
					<addClasspath>true</addClasspath>
					<!--<mainClass></mainClass>-->
				</manifest>
			</archive>
			<excludes>
				<!--<exclude></exclude>-->
			</excludes>
		</configuration>
	</plugin>
	<!--assembly plugin -->
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-assembly-plugin</artifactId>
		<version>${maven-assembly-plugin.version}</version>
		<configuration>
			<descriptors>
				<descriptor>${project.basedir}/../assembly/assembly.xml</descriptor>
			</descriptors>
		</configuration>
		<executions>
			<execution>
				<id>make-assembly</id>
				<phase>package</phase>
				<goals>
					<goal>single</goal>
				</goals>
			</execution>
		</executions>
	</plugin>
</plugins>
2.assembly配置
<assembly>
	<id>bin</id>
	<formats>
		<format>tar.gz</format>
	</formats>

	<dependencySets>
		<!-- runtime scope jar -->
		<dependencySet>
			<useProjectArtifact>false</useProjectArtifact>
			<outputDirectory>lib</outputDirectory>
			<unpack>false</unpack>
			<scope>runtime</scope>
		</dependencySet>
		<!-- system scope jar -->
		<dependencySet>
			<useProjectArtifact>false</useProjectArtifact>
			<outputDirectory>lib</outputDirectory>
			<unpack>false</unpack>
			<scope>system</scope>
		</dependencySet>
	</dependencySets>

	<fileSets>
		<!-- script -->
		<fileSet>
			<directory>${project.basedir}/../scripts</directory>
			<outputDirectory>bin</outputDirectory>
			<fileMode>0644</fileMode>
			<directoryMode>0755</directoryMode>
			<filtered>true</filtered>
		</fileSet>
		<!-- config -->
		<fileSet>
			<directory>${project.basedir}/src/main/resources</directory>
			<outputDirectory>config</outputDirectory>
			<fileMode>0644</fileMode>
			<directoryMode>0755</directoryMode>
			<includes>
				<include>*.xml</include>
				<include>*.json</include>
				<include>*.properties</include>
			</includes>
			<filtered>true</filtered>
		</fileSet>
		<!-- the project jar -->
		<fileSet>
			<directory>${project.build.directory}</directory>
			<outputDirectory>lib</outputDirectory>
			<includes>
				<include>*.jar</include>
			</includes>
		</fileSet>
		<!-- Document -->
		<fileSet>
			<directory>${project.basedir}</directory>
			<outputDirectory>doc</outputDirectory>
			<includes>
				<include>README*</include>
				<include>LICENSE*</include>
				<include>NOTICE*</include>
			</includes>
		</fileSet>
	</fileSets>
</assembly>
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值