【maven】spring-boot-maven-plugin 使用

本文详细介绍如何使用spring-boot-maven-plugin插件对SpringBoot项目进行打包,生成可直接运行的jar文件。通过配置pom文件,指定插件版本及执行目标,实现自动化打包流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在不使用spring-boot-maven-plugin插件打包springboot的web项目生成的jar包是无法直接运行的。因为直接打包的jar包仅仅是一个普通的jar包,没有打包依赖也没有指定main-class,所以无法直接运行。

所以需要在pom中引入spring-boot-maven-plugin插件。该插件的作用是对普通的jar包做repackage,从而生成一个可执行的jar文件。该插件的goal主要有:repackage和run。repackage目标用于打包生成可执行的jar文件,run用于启动springboot应用程序。

pom配置:

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.0.1.RELEASE</version>
        </plugin>
    </plugins>
</build>

这里首先使用了finalName标签配置了生成的jar文件的名称,这样做可以覆盖默认的jar文件,去掉版本号信息。然后在plugins标签下配置了spring-boot-maven-plugin插件。在如上配置下,使用mvn构建可执行jar时,需要显示指定运行插件的goal,比如repackage目标:

mvn clean package spring-boot:repackage

这里先执行了clean生命周期,再执行default生命周期的package阶段,最后是spring-boot插件的repackage目标。需要注意的是,在执行repackage目标时,必须先执行default生命周期的至少是package的阶段,生成一个默认的jar文件,然后spring-boot插件的repackage目标才能执行成功,如果直接执行repackage,会报错:
Execution default-cli of goal org.springframework.boot:spring-boot-maven-plugin:2.0.1.RELEASE:repackage failed: Source file must be provided -> [Help 1]

当然,每一次手动执行repackage目标比较麻烦,可以在execution标签内指定默认执行的goal:

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.0.1.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

采用如上配置时,只需要运行mvn的package阶段即可,由于repackage目标默认绑定在default生命周期的package阶段,所以运行mvn的package时,便会按照如上配置执行repackage目标:

mvn clean package

实际使用时,也推荐配置execution标签。

 

run目标执行比较简单,不做过多介绍,例子:

mvn spring-boot:run

 

参考:https://docs.spring.io/spring-boot/docs/current/maven-plugin/usage.html

### spring-boot-maven-plugin 安装与使用教程 #### 插件简介 `spring-boot-maven-plugin` 是 Spring Boot 提供的一个 Maven 插件,主要用于支持 Spring Boot 应用程序的构建和打包过程。通过该插件可以轻松创建可执行的 JAR 或 WAR 文件,并且能够处理应用程序生命周期中的特定阶段操作。 --- #### 如何安装 `spring-boot-maven-plugin` 为了在项目中启用 `spring-boot-maven-plugin`,需要将其添加到项目的 `pom.xml` 文件中。以下是具体的配置方法: ```xml <build> <plugins> <!-- 添加 spring-boot-maven-plugin --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <!-- 确保指定版本号 [^3] --> <executions> <execution> <goals> <goal>repackage</goal> <!-- 使用 repackage 打包可运行 jar/war 包 [^2] --> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 上述代码片段展示了如何将 `spring-boot-maven-plugin` 集成到 Maven 构建流程中。其中 `<version>` 属性必须显式声明以避免警告信息。 --- #### 基本功能说明 1. **打包可执行文件** - 默认情况下,`spring-boot-maven-plugin` 会在 `mvn package` 过程中自动调用 `repackage` 目标,从而生成一个包含所有依赖项的独立可执行 JAR/WAR 文件[^2]。 2. **启动/停止应用 (integration-test 阶段)** - 在集成测试阶段 (`integration-test`) 中,可以通过定义额外的目标来控制 Spring Boot 应用程序的启动和关闭行为。例如: ```xml <execution> <id>pre-integration-test</id> <phase>pre-integration-test</phase> <goals> <goal>start</goal> <!-- 启动应用 [^1] --> </goals> </execution> <execution> <id>post-integration-test</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> <!-- 关闭应用 [^1] --> </goals> </execution> ``` 3. **与其他插件的关系** - 虽然 `maven-compiler-plugin` 和其他标准 Maven 插件也参与构建过程,但它们的功能各有侧重。具体来说,`spring-boot-maven-plugin` 更专注于解决 Spring Boot 特定的需求,而不会替代基础的编译工具链[^4]。 --- #### 实际命令示例 以下是一些常用的 Maven 命令及其作用: | 命令 | 功能描述 | |--------------------------|-------------------------------------------------------------------------| | `mvn clean package` | 清理旧文件并重新打包项目为可执行 JAR/WAR 文件 | | `mvn spring-boot:start` | 单独启动 Spring Boot 应用实例 | | `mvn spring-boot:stop` | 终止由 `spring-boot:start` 启动的应用 | 注意,在实际开发过程中建议始终验证 POM 文件中是否存在必要的属性设置以及版本一致性问题。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值