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

这篇具有很好参考价值的文章主要介绍了【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

<!--  多环境配置  -->
    <profiles>
        <!--  开发环境  -->
        <profile>
            <id>dev</id>
            <properties>
                <profileActive>dev</profileActive>
            </properties>
            <!-- 默认激活的环境 -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--  生产环境  -->
        <profile>
            <id>prod</id>
            <properties>
                <profileActive>prod</profileActive>
            </properties>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
        </profile>
    </profiles>

    <build>
        <!-- 打包后的jar包名称 -->
        <finalName>spring-boot-demo</finalName>
        <!-- 打包配置 -->
        <plugins>
            <!-- maven 打包时跳过测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- &lt;!&ndash;  指定该Main Class为全局的唯一入口 &ndash;&gt;-->
                    <!-- <mainClass>com.xhs.ToolsApp</mainClass> -->
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--可以把依赖的包都打包到生成的Jar包中-->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- 个性化打包 -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <!-- 打包文件名字不包含 assembly.xml 中 id -->
                    <appendAssemblyId>false</appendAssemblyId>
                    <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>
        </plugins>

        <!-- 资源配置 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>*.yml</include>
                    <include>*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

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插件多环境打包,maven,spring boot,java
6.打包

mvn clean package -P prod

【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包,maven,spring boot,java
7.打包后的目录结构
【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包,maven,spring boot,java

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插件多环境打包,maven,spring boot,java
9.调用接口测试
【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包,maven,spring boot,java
【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包,maven,spring boot,java
10.源码地址
https://gitee.com/xhs101/spring-boot-demo文章来源地址https://www.toymoban.com/news/detail-650196.html

到了这里,关于【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA创建SpringBoot+maven项目

    1.新建file-new-project项目 2. 选择springboot项目,修改项目名,选择java8,type默认为maven,点击next 3.选择相关依赖,web中选择spring web,SQL中选择mysql driver,developer tools中选择lombok,点击finish 4.新建项目如图 5.设置maven的配置,file-settings 6.选择build,execution,deployment-build tools -maven 7.选择

    2024年02月15日
    浏览(74)
  • 解决IDEA新建springboot项目时不能导入maven依赖(右边没有maven窗口)

    1.问题:今天在github上找了一个springboot项目,但是用idea打开后发现不能导入maven依赖,并且在IDEA右边也没有出现maven窗口,如下图  2.解决方法:右键点击pom.xml文件,然后点击“Add as Maven Project”即可  此时发现右边出现maven,然后在pom.xml中重新加载maven依赖即可  

    2024年02月14日
    浏览(69)
  • SpringBoot学习——追根溯源servlet是啥,tomcat是啥,maven是啥 & springBoot项目初步,maven构建,打包 & 测试

    1.追根溯源,servlet是啥,tomcat是啥,maven是啥; 2.前后端开发模式,mvc,mvvc,service层的事务; 3.maven对项目全生命周期的管理,打包jar包和运行; 4.springBoot项目的搭建,pom文件,项目结构,项目环境; 5.Druid连接数据库,管理连接,springBootApplication的exclude; 6.banner.text的使用

    2024年02月13日
    浏览(49)
  • idea导入springboot项目没有maven

            是因为项目识别pom文件失败了,需要我们手动添加maven的主pom文件。         在项目中双击shift按钮,进入文件查找的功能,然后搜索maven。 然后点击Add Maven Project添加maven主配置文件,然后等待编译就行。     参考链接: Idea导入SpringBoot项目,没有maven - 简书 (jian

    2024年02月15日
    浏览(61)
  • IDEA 中搭建 Spring Boot Maven 多模块项目 (父SpringBoot+子Maven)

    [Ref] 新建一个SpringBoot项目 删除无用的 .mvn 目录、 src 目录、 mvnw 及 mvnw.cmd 文件,最终只留 .gitignore 和 pom.xml ① 删除 dependencies 标签及其中的 spring-boot-starter 和 spring-boot-starter-test 依赖,因为 Spring Boot 提供的父工程已包含,并且父 pom 原则上都是通过 dependencyManagement 标签管理

    2024年01月20日
    浏览(75)
  • SpringBoot多模块项目开发(Maven多模块项目)

    不论是maven还是Gradle,参考优秀的开源项目和boot官网的最佳实践使用构建工具组织代码来构建自己的项目,比如nacos、springboot,ruoyi等等; 要找到 Spring Boot 官网上关于 Maven 多模块项目的最佳实践,可以按照以下步骤进行: 打开 Spring Boot 官网(spring.io/projects/sp… 在导航菜单

    2024年02月04日
    浏览(40)
  • SpringBoot项目使用docker-maven-plugin插件构建docker镜像以及推送到docker hub或docker registry私服

    我们知道docker可将应用程序和基础设施层隔离,可更快地打包、测试以及部署应用程序。本文主要介绍SpringBoot项目如何构建docker镜像以及推送到私服或者docker hub服务器上。 本文介绍的方式是使用docker-maven-plugin的方式构建SpringBoot的docker镜像以及推送到私服或docker hub服务器上

    2024年02月16日
    浏览(46)
  • Maven高级---聚合(如何将SpringBoot项目打包上线)

    目录 Maven集合要解决的问题 解决办法-Maven聚合 总结 情景:项目已经开发完毕,要将该management工程打包上线. 此时我们点击Maven的打包按钮 但结果是构建失败,提示如下 原因:执行打包时他会在本地仓库中寻找模块,然而Maven本地仓库中并没有这两个模块的jar包,因此就失败了. 此时

    2024年02月07日
    浏览(40)
  • idea导入SpringBoot项目,没有启动按钮,没有maven

    解决办法:(快捷键双击Shift,在搜索框中搜索maven,点击Add Maven Project,就 行了) 如果在idea出现下图这种,说明成功了

    2024年02月11日
    浏览(65)
  • 芋道SpringBoot配置Maven、创建SpringBoot项目、创建Web接口、读取配置信息

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 第一章 芋道 Spring Boot 快速入门 芋道 SpringBoot是一款国产的SpringCloud微服务框架,包括Outh2.0、微服务网关、微服务注册中

    2024年04月23日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包