maven篇6:maven打包

时间:2022-10-09 12:59:15


使用maven对项目进行打包,可用以下三种plugin

maveb-jar-plugin : maven默认打包插件,用来创建project jar
maven-shade-plugin : 用来打可执行包(executable jar)
maven-assembly-plugin : 支持定制化打包方式
下面简单介绍以下maven-assembly-plugin
指定打包文件src/main/assembly/assembly.xml,在该配置文件内指定打包操作。

<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
[...]
</project>


配置文件参数解释说明

1、id
<id>release</id>
1
id标识符,添加到生成文件名称的后缀符。如果指定id的话,目标文件名则是 a r t i f a c t I d − {artifactId}-artifactId−{id}.tar.gz

2、formats
maven-assembly-plugin 支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式

<formats>
<format>tar.gz</format>
<format>dir</format>
</formats>

3、fileSets
管理一组文件的存放位置,核心元素如下表所示:

maven篇6:maven打包

<fileSets>
<fileSet>
<includes>
<include>bin/**</include>
</includes>
<fileMode>0755</fileMode>
</fileSet> <fileSet>
<includes>
<include>/conf/**</include>
<include>logs</include>
</includes>
</fileSet> </fileSets>


 

4、files

可以指定目的文件名到指定目录,其他和 fileSets 相同,核心元素如下表所示。

 

maven篇6:maven打包

 具体的标签类型看官方文档,下面介绍几个常用的元素
​​​Apache Maven Assembly Plugin – Assembly​

工程目录结构示例

maven篇6:maven打包

 参考

​maven assembly打包插件详解_隐0士的博客-_assembly打包​

打包后可以通过脚本启动,附(参考)脚本

win

@echo off
if ""%1"" == ""-p"" goto doSetPort
if ""%1"" == """" goto doStart

echo Usage: %0 [OPTIONS]
echo -p [port] Server port (default: 8899)
goto end

:doSetPort
shift
set PORT=%1

:doStart
set DDCFGDIR=%~dp0%..\conf
set CLASSPATH=%DDCFGDIR%
SET CLASSPATH=%~dp0..\lib\*;%CLASSPATH%
set CONSOLE_MAIN=com.test.ConsoleStart
echo on
if ""%PORT%"" == """" set PORT=8899
java -cp "%CLASSPATH%" %CONSOLE_MAIN% %PORT%

:end

linux

#!/bin/bash

show_usage() {
echo "Usage: $0 [OPTIONS]"
echo " -p <port> Server port (default: 8899)"
exit 1
}

if [ $# -ne 0 ] && [ $# -ne 2 ]; then
show_usage
fi

port="8899"

if [ $# -eq 2 ]; then
while getopts p: arg
do case "$arg" in
p) port="$OPTARG";;
[?]) show_usage;;
esac
done
fi

if [ "$port" = "" ]; then
show_usage
fi

cd `dirname $0`
cd ..
DEPLOY_DIR=`pwd`
LIB_DIR=${DEPLOY_DIR}/lib/*
CONSOLE_MAIN=com.testConsoleStart

java -classpath ${LIB_DIR}:. ${CONSOLE_MAIN} $port