8.1 Spring Boot Maven插件
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文件”部分。
插件信息页面中提供了高级配置选项和示例。