1、我的项目目录结构
2、在maven的pom.xml 文件添加build 插件
<build> <finalName>${jar.name}</finalName> <plugins> <!-- 打jar包的插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib</classpathPrefix> <mainClass>com.paas.gateway.PaasGatewayApplication</mainClass> </manifest> <manifestEntries> <Class-Path>./</Class-Path> </manifestEntries> </archive> <excludes> <exclude>*.properties</exclude> <exclude>*.yml</exclude> </excludes> </configuration> </plugin> <!-- 配置将jar包和外部配置等文件整体打包 --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <!--jar包名称 --> <finalName>${project.artifactId}-${project.version}</finalName> <!--描述文件路径 --> <descriptors> <descriptor>src/assembly/assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-zip</id> <!-- 绑定到package生命周期阶段上 --> <phase>package</phase> <goals> <!-- 只运行一次 --> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3、新建 assembly.xml文件
<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>runtime</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.basedir}/src/main/scripts</directory> <outputDirectory></outputDirectory> <fileMode>0755</fileMode> <includes> <include>**.sh</include> <include>**.bat</include> </includes> </fileSet> <fileSet> <directory>${project.basedir}/target/classes</directory> <outputDirectory>config</outputDirectory> <fileMode>0644</fileMode> <includes> <include>*.properties</include> <include>*.yml</include> </includes> </fileSet> <fileSet> <directory>${project.basedir}/target</directory> <outputDirectory>/</outputDirectory> <fileMode>0755</fileMode> <includes> <include>${project.build.finalName}.jar</include> </includes> </fileSet> </fileSets> <dependencySets> <dependencySet> <outputDirectory>lib</outputDirectory> <!-- 是否把当前项目的输出jar包并使用,true则会把当前项目输出为jar包到输出目录,false不输出 --> <scope>runtime</scope> <excludes> <exclude>${groupId}:${artifactId}</exclude> </excludes> </dependencySet> </dependencySets> </assembly>
4、打包生成的结果
5、windows,.bat运行项目
echo off chcp 65001 set i=3 :restart start /b /wait jre1.8.0_331/bin/java -jar -Xmx256m -Xms128m -Dfile.encoding=utf-8 -Dspring.config.location=classpath:/config/application.yml xxxxx.jar echo "遇到错误停止运转10秒后自动重启" timeout /t 10 if %i% GTR 0 ( set /a i = %i% - 1 goto restart ) pause
6、linux,.sh运行项目
#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=xxxxx.jar #使用说明,用来提示输入参数 echo "Usage: sh startup.sh start" #检查程序是否在运行 is_exist() { pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else java -jar -Xmx256m -Xms128m -Dfile.encoding=utf-8 -Dspring.config.location=classpath:/config/application.yml $APP_NAME fi echo "start success"