基于maven的SpringBoot项目构建


SpringBoot对maven提供了Spring Boot Maven插件,它可以用来将项目打包为可自行的jar或者war包,运行SpringBoot应用程序,生成构建信息和在运行整合测试前启动SpringBoot应用。

一、引入插件

为了使用Spring Boot maven插件,需要在pom.xml文件中添加以下代码引入插件:

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

二、父项目为spring-boot-starter-parent时插件的功能

Maven 用户可以使用 spring-boot-starter-parent为父 项目以获得合理的默认配置值。

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.4.10</version>
</parent>

该父项目提供的功能包括:

  • java1.8为默认编译级别;
  • UTF-8为默认编码;
  • 一个继承自spring-boot-dependencies的依赖管理版块,该版块管理了常见依赖项的版本,以便省略这些依赖项的<version> 标记;
  • 一个repackage goal和repackage执行id;
  • 合理的资源过滤;
  • 智能插件配置,例如maven-complier-plugin插件,配置了parameters,可以达到不写@Param,mybatis也能正常读取到参数名称;
  • 对application.properties 和 application.yml 的合理资源过滤,包括特定于配置文件的文件

当然,你也可以在项目中对默认的依赖版本进行覆盖,例如:

<properties>
	<slf4j.version>1.7.30</slf4j.version>
	<spring-data-releasetrain.version>Moore-SR6</spring-data-releasetrain.version>
</properties>

三、使用spring-boot-dependencies引入SpringBoot

如果你不想使用spring-boot-starter-parent,那么你可以通过使用spring-boot-dependencies来引入springboot相关依赖,不同的是该方式只会引入依赖,properties和plugins需要自己重新定义:

<dependencyManagement>
	<dependencies>
		<dependency>
			<!-- Import dependency management from Spring Boot -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.4.10</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

此种方式下不能仅通过定义<properties>来覆盖默认依赖,需要在其之前完整的声明目标依赖,才能达到覆盖默认依赖的效果,例如:

<dependencyManagement>
	<dependencies>
		<!-- Override SLF4J provided by Spring Boot -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.30</version>
		</dependency>
		<!-- Override Spring Data release train provided by Spring Boot -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-releasetrain</artifactId>
			<version>2020.0.0-SR1</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.4.10</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

四、打包为可执行文件

将项目打包为可执行文件由 repackage goal执行,如以下示例所示:

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

如果你使用的是 spring-boot-starter-parent,则此类执行已经预先配置了<goal>repackage</goal>,因此只应添加插件定义。而spring-boot-dependencies则必须添加完全。

也可以配置打包时项目的主启动类和打包格式,manifest 中的 Main-Class 由 Spring Boot 插件的 layout 属性控制,如下例所示:

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<mainClass>${start.class}</mainClass>
				<layout>ZIP</layout>
			</configuration>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

layout的默认值根据项目情况默认为JAR或WAR,可取的值还有ZIP和NONE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值