將配置文件,啟動文件和運行的包打到一個壓縮文件,在Linux環境下解壓啟動即可
assembly.xml位置
文件內容
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <id>0.0.1</id> <formats> <format>tar.gz</format> </formats> <dependencySets> <dependencySet> <!-- 不使用項目的artifact,第三方jar不要解壓,打包進zip文件的lib目錄 --> <!-- <useProjectArtifact>false</useProjectArtifact> --> <outputDirectory>lib</outputDirectory> <unpack>false</unpack> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>src/main/resources</directory> <outputDirectory>config/</outputDirectory> <!-- <fileMode>644</fileMode> 修改權限 --> <includes> <include>*.xml</include> <include>*.properties</include> <include>*.conf</include> <include>*.yml</include> <include>**/*.xml</include> <include>**/*.conf</include> <include>**/**/*.xml</include> <include>**/**/*.properties</include> <include>**/*.txt</include> </includes> </fileSet> <fileSet> <directory>${project.build.scriptSourceDirectory}</directory> <outputDirectory></outputDirectory> <includes> <include>*.*</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory></outputDirectory> <includes> <include>*.jar</include> <!-- <include>*.xml</include> <include>*.properties</include> --> </includes> </fileSet> </fileSets> <!--<dependencySets>--> <!--<dependencySet>--> <!--<useProjectArtifact>true</useProjectArtifact>--> <!--<outputDirectory>lib</outputDirectory> <!– 將scope為runtime的依賴包打包到lib目錄下。 –>--> <!--<scope>runtime</scope>--> <!--</dependencySet>--> <!--</dependencySets>--> </assembly>
pom.xml配置build部分
<build> <finalName>${project.artifactId}-${project.version}</finalName> <sourceDirectory>src/main/java</sourceDirectory> <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>${maven.source.plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>${maven.jar.plugin.version}</version> </plugin> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>${proguard.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>${maven.install.plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>${maven.deploy.plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compiler.plugin.version}</version> <configuration> <fork>true</fork> <source>${java.source.version}</source> <target>${java.target.version}</target> <encoding>${file.encoding}</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>${maven.assembly.plugin.version}</version> </plugin> </plugins> </pluginManagement> <resources> </resources> <plugins> <!-- 打包jar文件時,配置manifest文件,加入lib包的jar依賴 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <!-- 生成的jar中,不要包含pom.xml和pom.properties這兩個文件 --> <addMavenDescriptor>false</addMavenDescriptor> <!-- 清單文件 --> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>xxx.xxx.xxxApplication(啟動類全路徑)</mainClass> </manifest> <!-- 給清單文件添加鍵值對(配置文件外置) --> <manifestEntries> <Class-Path>config/</Class-Path> </manifestEntries> </archive> <excludes> <exclude>*.properties</exclude> <exclude>*.xml</exclude> <exclude>*.conf</exclude> <exclude>*.txt</exclude> </excludes> </configuration> </plugin> <!-- 打包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <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> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
啟動停止的sh文件
start.sh
#!/bin/bash APP_NAME=app名稱 APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd $APP_DIR PID_FILE="$APP_NAME.pid" CONF_DIR=./config LIB_DIR=./lib DEP_JAR=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"` echo "$DEP_JAR" echo "$CONF_DIR" JAVA_OPTS=" -Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -server -Xms512m -Xmx512m -XX:SurvivorRatio=8 -XX:+UseParallelGC" MAIN_CLASS=xxx.xxx.xxxApplication() start() { echo "######### start $APP_NAME #########" nohup java $JAVA_OPTS -classpath $CONF_DIR:$DEP_JAR $MAIN_CLASS >> /dev/null 2>&1 & echo $! > $PID_FILE } start
stop.sh
#!/bin/bash moduleName="XXXApplication" tpid=`ps -ef|grep ${moduleName}|grep -v grep|grep -v PPID|awk '{ print $2}'` for i in $tpid do echo "Kill the ${moduleName} process [ $i ]" kill -9 $i done