1、引入maven依赖
<build>
<resources>
<resource>
<!-- 设定主资源目录 -->
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 打jar包的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
<!-- 程序启动入口,对应springboot启动类 -->
<mainClass>com.jingbo.houtai.HoutaiApplication</mainClass>
</manifest>
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
<!-- 打成的jar包要排除这些文件 因为配置文件以及页面会在jar包外边 -->
<excludes>
<exclude>etc/</exclude>
<exclude>static/</exclude>
<exclude>templates/</exclude>
<exclude>mapper/</exclude>
<exclude>**/*.properties</exclude>
<exclude>**/*.yml</exclude>
<exclude>**/*.xml</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- not append assembly id in release file name -->
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2、构建package.xml
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>package</id>
<formats>
<format>tar.gz</format>
</formats>
<!-- 改为false不会出现两层相同的目录 -->
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<!-- 因为我的前端vue页面放在这里了,不想把源码都打进去 所以添加了includes -->
<includes>
<include>*.yml</include>
<include>*.xml</include>
<include>templates/**</include>
<include>mapper/**</include>
<include>static/css/**</include>
<include>static/dist/**</include>
<include>static/images/**</include>
<include>static/js/**</include>
<include>static/lib/**</include>
<include>static/uploadfile/**</include>
</includes>
<outputDirectory>conf</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/webapp/lib</directory>
<outputDirectory>lib</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>${file.separator}</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
<excludes>
<exclude>${groupId}:${artifactId}</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
3、自定义脚本
#启动命令所在目录
APP_HOME=$(cd $(dirname $0); pwd)
srcPath=$(readlink ${0})
if [ -f "$srcPath" ];then
APP_HOME=$(cd $(dirname $srcPath); pwd)
fi
APP_HOME=$(dirname $APP_HOME)
echo "APP_HOME: $APP_HOME"
#Check APP_HOME
if [ ! -d "$APP_HOME" ];then
echo "ERROR:App not found at $APP_HOME"
exit 1
fi
run(){
#进入命令所在目录
echo "APP_HOME: $APP_HOME"
cd $APP_HOME
java -jar houtai-1.0.0.jar //这里和后边把jar包名字换成你自己的
}
start(){
#进入命令所在目录
echo "APP_HOME: $APP_HOME"
cd $APP_HOME
nohup java -jar houtai-1.0.0.jar &
}
stop(){
#kill 掉本程序
ps -ef | grep houtai-1.0.0.jar | grep -v grep |awk '{print $2}' | xargs sudo kill -9
}
case $1 in
start)
start
;;
run)
run
;;
stop)
stop
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: {start|stop|restart}"
;;
esac
exit 0
3.项目结构截图

image.png