springboot项目maven打包

将配置文件,启动文件和运行的包打到一个压缩文件,在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>  &lt;!&ndash; 将scope为runtime的依赖包打包到lib目录下。 &ndash;&gt;-->
    <!--<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

猜你喜欢

转载自www.cnblogs.com/ouyq/p/11344353.html