maven-jar-plugin
maven-assembly-plugin
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
<id>assemblyid>
<formats>
<format>zipformat>
formats>
<dependencySets>
<dependencySet>
<outputDirectory>liboutputDirectory>
<scope>runtimescope>
dependencySet>
dependencySets>
<fileSets>
<fileSet>
<directory>lib/directory>
<outputDirectory>liboutputDirectory>
<includes>
<include>*include>
includes>
fileSet>
<fileSet>
<directory>src/main/resourcesdirectory>
<outputDirectory>configoutputDirectory>
<includes>
<include>*.ymlinclude>
<include>*.yamlinclude>
<include>*.txtinclude>
<include>*.xmlinclude>
includes>
fileSet>
<fileSet>
<directory>sqldirectory>
<outputDirectory>sqloutputDirectory>
<includes>
<include>**include>
includes>
fileSet>
<fileSet>
<directory>bindirectory>
<outputDirectory>binoutputDirectory>
<directoryMode>0777directoryMode>
<fileMode>0777fileMode>
<lineEnding>unixlineEnding>
<includes>
<include>*include>
includes>
fileSet>
fileSets>
assembly>
<properties>
<deploy.plugin.version>3.1.1deploy.plugin.version>
<assembly.plugin.version>3.6.0assembly.plugin.version>
<dependency.plugin.version>3.3.0dependency.plugin.version>
<jar.plugin.version>3.2.2jar.plugin.version>
properties>
<build>
<resources>
<resource>
<directory>src/main/resourcesdirectory>
<includes>
<include>**/*include>
includes>
<filtering>falsefiltering>
resource>
resources>
<finalName>AppNamefinalName>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-surefire-pluginartifactId>
<version>${surefire.plugin.version}version>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-jar-pluginartifactId>
<version>${jar.plugin.version}version>
<configuration>
<archive>
<manifest>
<mainClass>path.to.*ApplicationmainClass>
<addClasspath>trueaddClasspath>
<addDefaultImplementationEntries>trueaddDefaultImplementationEntries>
<addDefaultSpecificationEntries>trueaddDefaultSpecificationEntries>
<addBuildEnvironmentEntries>trueaddBuildEnvironmentEntries>
manifest>
archive>
configuration>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-dependency-pluginartifactId>
<version>${dependency.plugin.version}version>
<executions>
<execution>
<id>copy-dependenciesid>
<phase>prepare-packagephase>
<goals>
<goal>copy-dependenciesgoal>
goals>
<configuration>
<outputDirectory>${project.build.directory}/liboutputDirectory> <overWriteIfNewer>trueoverWriteIfNewer>
configuration>
execution>
executions>
plugin>
<plugin>
<artifactId>maven-assembly-pluginartifactId>
<version>${assembly.plugin.version}version>
<executions>
<execution>
<id>distro-assemblyid>
<phase>packagephase>
<goals>
<goal>singlegoal>
goals>
<configuration>
<descriptors>
<descriptor>assembly/assembly.xmldescriptor>
descriptors>
configuration>
execution>
executions>
<configuration>
<appendAssemblyId>falseappendAssemblyId>
configuration>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-deploy-pluginartifactId>
<version>${deploy.plugin.version}version>
<configuration>
<skip>trueskip>
configuration>
plugin>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
exclude>
excludes>
configuration>
plugin>
plugins>
build>
执行 mvn package
打包
#! /bin/bash
# init app environment
export APP_HOME=`cd $(dirname $0)/..; pwd`
PIDFILE=$APP_HOME/app.pid
# set java main class
MAIN_CLASS="path.to.*Application"
# set class path config and jar package
CLASSPATH=${CLASSPATH}:${APP_HOME}/config
CLASSPATH=${CLASSPATH}:${APP_HOME}/lib/*
# init java environment
export JAVA=$(which java)
if [ -z "$JAVA" ] ; then
echo "no java environment ... "
exit 1;
fi
# set java opt
JAVA_OPT=" ${JAVA_OPT} -cp ${CLASSPATH}"
JAVA_OPT=" ${JAVA_OPT} -XX:+UseConcMarkSweepGC"
JAVA_OPT=" ${JAVA_OPT} -XX:CMSInitiatingOccupancyFraction=75"
#JAVA_OPT=" ${JAVA_OPT} -XX:+UseCMSInitiatingOccupancyOnly"
#JAVA_OPT=" ${JAVA_OPT} -Dlog4j2.formatMsgNoLookups=true"
JAVA_OPT=" ${JAVA_OPT} -Dapp.home=${APP_HOME}"
#JAVA_OPT=" ${JAVA_OPT} -Dfastjson.parser.safeMode=true"
JAVA_OPT=" ${JAVA_OPT} ${MAIN_CLASS}"
check_process_file() {
if [ -f $PIDFILE ]
then
PID=$(cat $PIDFILE)
ps -p $PID > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "Process already running"
exit 1
fi
fi
}
start() {
# shell method
cd $APP_HOME
echo "starting program ... "
echo "$JAVA ${JAVA_OPT}"
nohup $JAVA ${JAVA_OPT} > /dev/null 2>&1 &
check_process_file
if [ $? -eq 0 ] ; then
if echo -n $! > "$PIDFILE" ; then
PID=$(cat $PIDFILE)
echo "The program[$PID] launch succeed"
else
exit 1
fi
else
exit 1
fi
}
stop() {
echo "Stopping program ... "
if [ ! -f "$PIDFILE" ]
then
echo "No program to stop (could not find file $PIDFILE)"
else
PID=$(cat "$PIDFILE")
kill -15 $PID
while [ 0 -ne $(ps | awk '{print $1}' | grep -v -i "pid" | grep $PID | wc -l) ]
do
echo -e ".\c"
sleep 1s
done
rm "$PIDFILE"
echo "The program[$PID] is stopped"
fi
}
if [ "$1" = "stop" ]; then
stop
elif [ "$1" = "start" ]; then
start
elif [ "$1" = "restart" ]; then
echo "restart..."
stop
start
else
echo "Usage [start|stop|restart]"
fi