maven打包- assembly

代码结构

在这里插入图片描述
pom.xml中添加一下配置

 <build>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <!-- not append assembly id in release file name -->
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

run.sh,需要修改MAIN_CLASS和PROC_NAME

MY_CONFIG_FILE=../conf/application.properties
LOG_CONFIG_FILE=../conf/log4j2.xml

#-----------------------------------------------------------------------
# Process Entrance class
MAIN_CLASS=com.example.demo.DemoApplication
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
# Process Name to display
PROC_NAME=example-demo-Demo
#-----------------------------------------------------------------------

#=======================================================================
# Define LANG
#=======================================================================
#-----------------------------------------------------------------------
osName=`uname`
if [ "$osName" = "SunOS" ]; then
        LANG="zh_CN.UTF-8"
elif [ "$osName" = "Linux" ]; then
        LANG="zh_CN.utf8"
fi
export LANG
#-----------------------------------------------------------------------

#=======================================================================
# Define arguments for process
#=======================================================================



#-----------------------------------------------------------------------
# Flags for java Virtal Machine
VM_FLAG="-Xrs -Xms256M -Xmx512M"
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
# List of blank-separated paths defining the contents of the classes
# and jars
# Examples:
#       LOADER_PATH="foo foo/*.jar lib/nms-util.jar"
#     "foo": Add this folder as a class repository
#     "foo/*.jar": Add all the JARs of the specified folder as class
#                  repositories
#     "lib/nms-util.jar": Add lib/nms-util.jar as a class repository
LOADER_PATH="../lib/*.jar ../conf/*.properties"
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
# Specify the java_home
# if it has JAVA_HOME environment argument,specify to it,
# else change it to correct java path
#-----------------------------------------------------------------------
if [ -n $JAVA_HOME ]; then
    JAVA_CMD_EXEC=$JAVA_HOME/bin/java
else
    JAVA_CMD_EXEC=`which java`
fi

#-----------------------------------------------------------------------
# Process Arguments
PROC_ARGS=
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
# Process log file
LOG_FILE=./output
#-----------------------------------------------------------------------

#=======================================================================
# Define information tag
#=======================================================================
RUNNING_TAG="[Y]"
NOT_RUNNING_TAG="[N]"

#=======================================================================
# Define information JAVA_OPTS。 It's not necessary.
#=======================================================================
JAVA_OPTS=""

#-----------------------------------------------------------------------
# Process command array
ARRAY=
#-----------------------------------------------------------------------
SCRIPT_SERVER_IDS=`ps -ef | grep "Diname=$PROC_NAME" | grep -v grep | awk '{print $2}'`
set_classpath(){
        set ${LOADER_PATH}
        while [ $# -gt 0 ]; do
                classpath=${classpath}:$1
                shift
        done
        CLASSPATH=${classpath}:${CLASSPATH}
}

is_proc_run(){
        ps -ef | grep -w "${PROC_NAME}" | grep -v grep &>/dev/null
        return $?
}

param_add_quotes(){
    i=0
    for var in "$@";do
            if [ "$i" -eq 0 ]; then
                    ARRAY[$i]=$var
            else
                    ARRAY[$i]=\"$var\"
            fi
            i=$[$i+1]
    done
}

status_proc(){
        is_proc_run
        if [ $? -eq 0 ]; then
                PROC_PID=`ps -ef | grep -w "${PROC_NAME}" | grep -v grep |awk '{print $2}'`
                echo "${RUNNING_TAG} ${PROC_NAME} is running($PROC_PID) !"
        else
                echo "${NOT_RUNNING_TAG} ${PROC_NAME} is not running !"
        fi
}

start_proc(){
        is_proc_run
        if [ $? -eq 0 ]; then
                echo "${INFO_TAG} ${PROC_NAME} is already running !"
        else
                echo "${INFO_TAG} Starting ${PROC_NAME} ..."
                set_classpath
                nohup ${JAVA_CMD_EXEC} -Diname="${PROC_NAME}" ${VM_FLAG} -cp ${CLASSPATH} ${MAIN_CLASS} --spring.config.location=${MY_CONFIG_FILE} --logging.config=${LOG_CONFIG_FILE} > ${LOG_FILE} 2>&1 &
                sleep 1
                is_proc_run
                if [ $? -eq 0 ]; then
                        echo "${INFO_TAG} ${PROC_NAME} started !"
                else
                        echo "${ERROR_TAG} ${PROC_NAME} starts failed !"
                fi
        fi
}

stop_proc(){
        kill_server
}

kill_server(){
		is_proc_run
		if [ ! $? -eq 0 ]; then
	                echo "${INFO_TAG} ${PROC_NAME} is stopped!"
	                return 0
	    else
	            tmp=$SCRIPT_SERVER_IDS
	            kill_run $tmp
	            if [ ! $? -eq 0 ]; then
	                    echo "Can't stop ${INFO_TAG} ${PROC_NAME}!"
	                    return 1
	            else
	                    echo "${INFO_TAG} ${PROC_NAME} is stopped!"
	                    return 0
	            fi
	    fi
}

status_proc(){
        is_proc_run
        if [ $? -eq 0 ]; then
                PROC_PID=`ps -ef | grep -w "${PROC_NAME}" | grep -v grep |awk '{print $2}'`
                echo "${RUNNING_TAG} ${PROC_NAME} is running($PROC_PID) !"
        else
                echo "${NOT_RUNNING_TAG} ${PROC_NAME} is not running !"
        fi
}

kill_run(){
        kill $1
        return $?
}

usage(){
        echo ${PROC_NAME} usage:
        echo -e "`basename $0` <start|stop|exec|restart|status>"
        echo -e "\t start       ${PROC_NAME} start app"
        echo -e "\t stop        ${PROC_NAME} stop running"
        echo -e "\t restart     ${PROC_NAME} restart app"
        echo -e "\t status      ${PROC_NAME} show adapter status"
}


#=======================================================================
# Main Program begin
#=======================================================================
case $1 in
        start)
                start_proc
                ;;
        stop)
                stop_proc
                sleep 2
                ;;
        restart)
                sleep 1
                stop_proc
                sleep 3
                start_proc
                ;;
        status)
                status_proc $1
                ;;
        *)
                usage
esac

run.bat,需要修改MAIN_CLASS

@echo off
set MAIN_CLASS=com.qjzh.lhiot.web.QjzhLhiotWebApplication
set CLASSPATH=
for %%i in (../lib/*.jar) do (
	call set CLASSPATH=../lib/%%i;%%CLASSPATH%%
)
for %%i in (../conf/*.xml) do (
	call set CLASSPATH=../conf/%%i;%%CLASSPATH%%
)
for %%i in (../conf/*.properties) do (
	call set CLASSPATH=../conf/%%i;%%CLASSPATH%%
)
if "%1" == "start" goto start
if "%1" == "" goto start
if "%1" == "status" goto status
if "%1" == "stop" goto stop
if "%1" == "restart" goto restart
goto usage

:start
echo CLASSPATH=%CLASSPATH%
start java -cp %CLASSPATH% %MAIN_CLASS% start
pause
goto exit

:status
java -cp %CLASSPATH% %MAIN_CLASS% status
pause
goto exit

:stop
java -cp %CLASSPATH% %MAIN_CLASS% stop
pause
goto exit

:restart
java -cp %CLASSPATH% %MAIN_CLASS% stop
echo CLASSPATH=%CLASSPATH%
java -cp %CLASSPATH% %MAIN_CLASS% start
pause
goto exit

:usage
echo %0 <start|status|stop|restart>

:exit

在项目文件地址的target下,将*.tar.gz拷贝解压即可
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven-assembly-plugin是一个用于打包的插件,可以将项目中的多个模块合并成一个可执行的JAR包或者WAR包。然而,有时候我们可能需要对已经打包好的JAR或者WAR包进行进一步的处理或者外部打包。以下是关于maven-assembly-plugin外部打包的解答。 首先,我们需要确保已经正确配置了maven-assembly-plugin,并且在项目的pom.xml文件中已经定义好了自定义的assembly描述文件(assembly.xml)。 在进行外部打包之前,我们需要先将项目进行构建和打包。在项目根目录下通过命令行输入"mvn clean install"命令来构建项目,并且将项目打包成JAR或者WAR文件。 接下来,在项目根目录下创建一个新的文件夹(例如,external_package),用于存放外部打包的文件。 然后,可以通过以下命令来进行外部打包: mvn assembly:assembly -Ddescriptor=assembly.xml -DoutputDirectory=/path/to/external_package 在上面的命令中,-Ddescriptor参数用于指定assembly描述文件所在的路径以及文件名称,-DoutputDirectory参数用于指定外部打包文件存放的路径。 执行完上述命令后,maven-assembly-plugin会根据assembly.xml文件的定义,在指定的路径下生成外部打包文件。 通过以上步骤,我们就可以实现maven-assembly-plugin的外部打包功能。需要注意的是,我们在进行外部打包之前,需要先正确配置和打包项目,并且确保已经定义了正确的assembly描述文件。 外部打包可以用于将项目的可执行文件(如JAR或者WAR文件)与其它资源(如配置文件或者依赖库)合并打包成一个单独的压缩文件,方便部署和分发。它可以帮助我们将项目打包成一个易于使用和发布的形式,简化部署流程,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值