Spring Boot(02)——Maven插件

本文详细介绍了SpringBoot提供的Maven插件,包括run和repackage两个主要目标。run用于运行SpringBoot项目,repackage则用于将项目重新打包成一个包含所有依赖的独立jar文件。文章还讲解了如何配置插件参数,如JVM堆内存大小和排除特定依赖。

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

Spring Boot Maven插件

Spring Boot提供了一个Maven插件,在指定了spring-boot-starter-parent为项目的parent后,在项目中可以进行如下定义来配置Spring Boot的Maven插件。该plugin主要提供了两个goal,run和repackage,run用来运行当前Spring Boot工程,repackage则用来将项目重新打包。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

run

需要通过Maven插件启动spring boot项目时,可以运行如下命令。

mvn spring-boot:run

在运行的过程中也可以加入一些控制参数,比如下面的代码就通过jvmArguments参数指定了运行JVM的堆内存的最大值是512M。关于更多可以配置的参数可以参考https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/maven-plugin/run-mojo.html

 mvn spring-boot:run -Dspring-boot.run.jvmArguments=-Xmx512m

repackage

需要使用repackage进行重新打包时需要在定义plugin时进行如下定义。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

然后只需要运行正常的mvn package打包指令就可以触发插件的repackage指令进行重新打包。Spring Boot插件的repackage指令会将项目中相关的jar包都打到一个jar包里面,即jar包里面又包含jar包。打包后的jar包的主运行程序类将是Spring Boot提供的org.springframework.boot.loader.JarLauncher。然后可以使用java -jar your_java_file.jar运行打包好的jar包了。比如打包好的jar包的名称是app.jar,则可以使用下面的指令运行该jar包。

java -jar app.jar

假设在打包的时候有一个jar包是不需要包含的,可以通过execlude指定需要排除的包,如下则指定了需要排除org.projectlombok::lombok包。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </exclude>
        </excludes>
    </configuration>
</plugin>

如果是需要排除某一个groupId对应的所有的jar包,则可以使用excludeGroupIds进行指定。如下代码则指定了打包时将排除所有的groupId为org.springframework的包。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <excludeGroupIds>org.springframework</excludeGroupIds>
    </configuration>
</plugin>

关于repackage指令可以指定的完整参数,请参考https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/maven-plugin/repackage-mojo.html

参考文档

https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/maven-plugin/index.html

(注:本文是基于Spring Boot 2.0.3所写)

### 解决Maven项目中找不到spring-boot-maven-plugin插件的方法 对于IDEA环境中无法识别`spring-boot-maven-plugin`的情况,可以尝试通过调整IDE设置来解决问题。具体来说,在菜单栏选择`File` -> `Settings` -> `Build, Execution, Deployment` -> `Build Tools` -> `Maven`,随后勾选`Use plugin registry`选项[^3]。 另外一种常见情况是因为本地仓库缺少该插件对应的版本或者网络原因未能成功下载所需依赖项。此时建议清理已有的构建缓存并重新获取最新资源。可以通过命令行工具执行如下操作: ```bash mvn clean install -U ``` 上述指令中的参数-U表示强制更新快照版和发布版依赖,有助于确保所有必要的构件都被正确拉取到本地存储库内[^1]。 如果仍然存在加载失败的现象,则可能是由于pom.xml文件配置不当引起。确认<dependencies>标签内部有关于Spring Boot Starter Parent声明以及plugin部分定义无误非常重要。一个典型的POM片段可能看起来像这样: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> ... <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` 以上代码展示了如何指定父级项目SpringBoot官方提供的starter模板,并引入了用于支持Spring应用程序打包过程的关键组件——即`sprin-boot-maven-plugin`插件实例化语句[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值