8.1 Spring Boot Maven插件

优质
小牛编辑
121浏览
2023-12-01

Spring Boot Maven插件在Maven中提供Spring Boot支持,允许您打包可执行jar或war档案并“就地”运行应用程序。 要使用它,您必须使用Maven 3.2(或更高版本)。

有关完整的插件文档,请参阅Spring Boot Maven插件站点。

8.1.1 添加插件

要使用Spring Boot Maven插件,请在pom.xml的plugins部分中包含相应的XML,如以下示例所示:

<?xml version="1.0" encoding="UTF-8"?>
<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">
	<modelVersion>4.0.0</modelVersion>
	<!-- ... -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.1.3.RELEASE</version>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

上述配置重新打包在Maven生命周期的打包阶段构建的jar或war。 以下示例显示了重新打包的jar以及目标目录中的原始jar:

$ mvn package
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original

如果不包含配置,如前面的示例所示,您可以单独运行插件(但仅在使用包目标时),如以下示例所示:

$ mvn package spring-boot:repackage
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original

如果使用milestone或snapshot版本,则还需要添加相应的pluginRepository元素,如下面的清单所示:

<pluginRepositories>
	<pluginRepository>
		<id>spring-snapshots</id>
		<url>https://repo.spring.io/snapshot</url>
	</pluginRepository>
	<pluginRepository>
		<id>spring-milestones</id>
		<url>https://repo.spring.io/milestone</url>
	</pluginRepository>
</pluginRepositories>

8.1.2 打包可执行jar和war包

一旦spring-boot-maven-plugin包含在你的pom.xml中,它就会自动尝试使用spring-boot:repackage目标重写档案以使它们可执行。 您应该使用通常的打包元素将项目配置为构建jar或war(视情况而定),如以下示例所示:

<?xml version="1.0" encoding="UTF-8"?>
<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">
	<!-- ... -->
	<packaging>jar</packaging>
	<!-- ... -->
</project>

在程序包阶段,Spring Boot会增强现有存档。 可以通过使用配置选项或通过以常规方式向清单添加Main-Class属性来指定要启动的主类。 如果未指定主类,则插件将搜索具有public static void main(String[] args)方法的类。

要构建和运行项目工件,可以键入以下内容:

$ mvn package
$ java -jar target/mymodule-0.0.1-SNAPSHOT.jar

要构建可执行且可部署到外部容器的war文件,需要将嵌入式容器依赖项标记为“provided”,如以下示例所示:

<?xml version="1.0" encoding="UTF-8"?>
<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">
	<!-- ... -->
	<packaging>war</packaging>
	<!-- ... -->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<!-- ... -->
	</dependencies>
</project>

有关如何创建可部署的war文件的更多详细信息,请参阅“第9.17.1节”,“创建可部署的war文件”部分。

插件信息页面中提供了高级配置选项和示例。