Spring Boot 项目可执行 jar 的完整 Maven 打包示例

Spring Boot 项目可执行 jar 的完整 Maven 打包示例,同时支持以下功能:

  • 跳过测试
  • 指定环境 profile(dev/prod)
  • 自定义版本号
  • 生成可执行 jar

1. 假设 pom.xml 配置示例

xml 复制代码
<!-- 定义 Maven 项目的根元素,指定命名空间和 XSD 验证 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <!-- Maven 模型版本,一般固定为 4.0.0 -->
    <modelVersion>4.0.0</modelVersion>

    <!-- 项目坐标:groupId + artifactId + version 唯一标识一个 Maven 项目 -->
    <groupId>com.example</groupId>          <!-- 项目组织/公司标识,通常使用域名反写 -->
    <artifactId>demo</artifactId>          <!-- 项目名称或模块名 -->
    <version>1.0.0</version>               <!-- 项目版本 -->
    <packaging>jar</packaging>             <!-- 打包类型,可选 jar/war/pom 等 -->

    <!-- 项目属性,可在 pom.xml 或插件中引用 -->
    <properties>
        <java.version>17</java.version>                       <!-- 指定 JDK 版本 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 源码编码 -->
        <spring-boot.version>3.2.0</spring-boot.version>      <!-- Spring Boot 版本 -->
    </properties>

    <!-- 项目依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>  <!-- Spring Boot 核心启动依赖 -->
            <version>${spring-boot.version}</version>       <!-- 使用上面定义的版本 -->
        </dependency>
    </dependencies>

    <!-- 构建配置 -->
    <build>
        <plugins>
            <!-- Spring Boot Maven 插件:用于打包可执行 jar/war -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version> <!-- 插件版本与 Spring Boot 版本一致 -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal> <!-- repackage 目标会把 jar 打成可执行 Spring Boot jar,包含所有依赖 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <!-- Maven 构建 profile,用于不同环境的配置 -->
    <profiles>
        <profile>
            <id>dev</id> <!-- 开发环境 profile ID -->
            <properties>
                <spring.profiles.active>dev</spring.profiles.active> <!-- Spring Boot 激活 dev 配置 -->
            </properties>
        </profile>
        <profile>
            <id>prod</id> <!-- 生产环境 profile ID -->
            <properties>
                <spring.profiles.active>prod</spring.profiles.active> <!-- Spring Boot 激活 prod 配置 -->
            </properties>
        </profile>
    </profiles>

</project>

重点说明

  1. <properties>

    • 定义全局可复用变量,例如 spring-boot.version,在依赖或插件中可以 ${spring-boot.version} 调用。
  2. spring-boot-maven-plugin

    • 核心功能是把项目打成 可执行 jar(内嵌 Tomcat 或其他容器)。
    • <goal>repackage</goal>:生成可直接运行的 jar。
  3. profiles

    • 用来区分 不同环境配置,如 dev、prod。
    • 打包时可以指定:mvn clean package -Pdev
    • 激活 Spring Boot 配置文件 application-dev.ymlapplication-prod.yml
  4. 编码与 Java 版本

    • UTF-8 防止中文乱码。
    • <java.version> 决定编译兼容性。

2. Maven 打包命令示例

ini 复制代码
mvn clean package \
    -Pdev \                       # 指定环境为 dev,可改为 prod
    -DskipTests=true \            # 跳过单元测试
    -Drevision=1.0.5              # 自定义版本号

说明:

  • -Pdev:使用 dev profile
  • -DskipTests=true:跳过测试,提高打包速度
  • -Drevision=1.0.5:自定义版本号,可在 pom.xml 使用 ${revision}

3. 运行可执行 jar

ini 复制代码
java -jar target/demo-1.0.5.jar --spring.profiles.active=dev
  • 这里的 spring.profiles.active 可以覆盖 Maven profile
  • jar 包已经包含所有依赖,直接可运行

4. 打包 prod 示例

ini 复制代码
mvn clean package -Pprod -DskipTests=true -Drevision=1.0.5
java -jar target/demo-1.0.5.jar --spring.profiles.active=prod
相关推荐
开发者联盟league1 小时前
maven核心插件介绍
java·maven
编程令我快乐1 小时前
maven中deploy 的流程
java·maven
huaweichenai1 天前
使用maven搭建sprint-boot
java·maven·sprint
paopaokaka_luck1 天前
基于springboot3+vue3的美妆商城平台(AI问答、协同过滤算法、支付宝沙盒支付、物流快递api、Echarts图形化分析)
java·前端·spring boot·学习·maven·echarts
老马历写记3 天前
Maven POM 依赖管理总结
java·maven·system·pom·optional
sugar__salt5 天前
Spring、Spring Boot 与配置文件核心知识点详解
java·spring boot·后端·spring·java-ee·maven·intellij-idea
Architect_Lee7 天前
mac安装不同版本的maven
java·maven
BerryS3N7 天前
Java全平台开发环境配置与极速搭建指南(含JDK 8/17/21多版本管理、环境变量深层原理解析、Maven/Gradle构建工具及IDE集成)
java·ide·maven
sugar__salt8 天前
Spring 三层架构与 IoC、依赖注入完全指南
java·spring boot·后端·spring·架构·maven·intellij-idea
还是鼠鼠8 天前
【Spring AI智能体实战 02】Spring Boot 3.4整合Spring AI:项目创建与依赖配置
java·人工智能·spring boot·maven·spring ai