【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包

SpringBoot项目使用maven-assembly-plugin插件多环境打包

1.创建SpringBoot项目并在pom.xml文件中添加maven-assembly-plugin配置


    
        
        
            dev
            
                dev
            
            
            
                true
            
        
        
        
            prod
            
                prod
            
            
                false
            
        
    

    
        
        spring-boot-demo
        
        
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                
                    true
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                    
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
                
                    
                        
                            
                            repackage
                        
                    
                
            

            
            
                maven-assembly-plugin
                
                    
                    false
                    
                        src/main/assembly/assembly.xml
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                    
                
            
        

        
        
            
                src/main/java
                true
                
                    **/*.xml
                
            

            
                src/main/resources
                true
                
                    *.yml
                    *.xml
                
            
        
    

2.创建 在src/main/assembly目录下创建assembly.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
    <!-- 打包文件名的标识符,用来做后缀-->
    <id>make-assembly</id>
    <!-- 打包的类型,如果有N个,将会打N个类型的包 -->
    <formats>
        <format>tar.gz</format>
        <format>zip</format>
    </formats>
    <!-- 压缩包下是否生成和项目名相同的根目录 -->
    <includeBaseDirectory>true</includeBaseDirectory>
    <!-- 用来设置一组文件在打包时的属性。-->
    <fileSets>
        <!-- 0755->即用户具有读//执行权限,组用户和其它用户具有读写权限;-->
        <!-- 0644->即用户具有读写权限,组用户和其它用户具有只读权限;-->
        <!-- 将src/bin目录下的jar启动脚本输出到打包后的目录中 -->
        <fileSet>
            <directory>${basedir}/src/main/bin</directory>
            <outputDirectory>${file.separator}</outputDirectory>
            <fileMode>0755</fileMode>
            <includes>
                <include>**.sh</include>
                <include>**.bat</include>
            </includes>
        </fileSet>

        <!-- 把项目的配置文件,打包进压缩文件的config目录 -->
        <fileSet>
            <directory>${basedir}/src/main/resources</directory>
            <outputDirectory>config</outputDirectory>
            <fileMode>0644</fileMode>
            <includes>
                <include>*.properties</include>
                <include>*.yml</include>
                <include>*.xml</include>
            </includes>
        </fileSet>

        <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>${file.separator}</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

3.在src/main/bin创建在linux环境启动jar包的脚本

#!/bin/bash

# jar包名称
JAR_FILE="spring-boot-demo.jar"
# pid 名称
PID_FILE="spring-boot-demo.pid"

start() {
    if [ -f "$PID_FILE" ]; then
        echo "应用程序已在运行,PID: $(cat $PID_FILE) .........."
    else
    	# 后台启动jar包,并将启动日志输出到log.log文件中
        nohup java -jar -Dloader.path=.,3rd-li $JAR_FILE >> log.log 2>&1 &
        echo $! > $PID_FILE
        echo "应用程序已成功启动,PID: $(cat $PID_FILE) .........."
    fi
}

stop() {
    if [ -f "$PID_FILE" ]; then
        kill -9 $(cat $PID_FILE)
        rm $PID_FILE
        echo "应用程序已成功停止.........."
    else
        echo "应用程序未运行.........."
    fi
}

restart() {
    echo "正在重启.........."
    stop
    start
    echo "重启成功.........."
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        echo "使用: $0 {start|stop|restart} 命令"
        exit 1
        ;;
esac

4.配置application.yml文件

#application.yml
spring:
  profiles:
    active: @profileActive@
#application-dev.yml
server:
  port: 8001

spring:
  application:
    name: spring-boot-demo
#application-prod.yml
server:
  port: 8001

spring:
  application:
    name: spring-boot-demo

5.启动项目
【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包_第1张图片
6.打包

mvn clean package -P prod

【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包_第2张图片
7.打包后的目录结构
【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包_第3张图片

8.上传到linux服务器并启动jar包

# 解压tar包
tar -zxf spring-boot-demo.tar.gz
#启动jar包
sh app.sh start
#查看日志
tail -f log.log 

【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包_第4张图片
9.调用接口测试
【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包_第5张图片
【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包_第6张图片
10.源码地址
https://gitee.com/xhs101/spring-boot-demo

你可能感兴趣的:(maven,spring,boot,java)