68. Spring Boot Maven插件
Spring Boot Maven插件为Spring Boot在Maven中提供支持,让你打包为可执行jar或者war archive 并运行一个应用‘in place’。为了使用这个插件,你必须使用Maven 3.2(或者更后面的)。
note:查阅Spring Boot Maven插件页面了解完整的插件文档
68.1 包含这个插件
要使用Spring Boot Maven插件,包含合适的(appropriate)XML在你的pom.xml
的plugins
部分,如下所示:
<?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 <build> <plugins> <plugin> <groupId>org.springframework.boot <artifactId>spring-boot-maven-plugin <version>2.0.2.RELEASE <executions> <execution> <goals> <goal>repackage </goals> </execution> </executions> </plugin> </plugins> </build> </project>
该配置会在Maven生命周期的package阶段(phase)重新打包一个jar或war,下面的例子展示了target
目录下重新打包的jar和原始的jar:
$ mvn package $ ls target/\*.jar target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
如果你没有包含配置,像之前例子展示的那样,you can run the
plugin on its own (but only if the package goal is used as well),如下所示:
$ 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 <url>https://repo.spring.io/snapshot </pluginRepository> <pluginRepository> <id>spring-milestones <url>https://repo.spring.io/milestone </pluginRepository> </pluginRepositories>
68.2 打包可执行Jar和War文件
一旦spring-boot-maven-plugin
包含进你的pom.xml
,它自动尝试重写存档(archive)以让它们变得可执行,通过使用spring-boot:repackage
目标(goal)。你应该使用通常的packing
元素配置你的工程来构建一个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 </project>
你的存在的档案在package
阶段被Spring Boot增强。你想启动的主类通常可以使用一个配置选项或者添加一个Main-Class
特性(attribute)到manifest来指定。如果你没有指定一个主类,插件会寻找一个public static void main(String[] args)
方法。
为了构建和运行一个工程artifact,你可以采用下面这样:
$ 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 <dependencies> <dependency> <groupId>org.springframework.boot <artifactId>spring-boot-starter-web </dependency> <dependency> <groupId>org.springframework.boot <artifactId>spring-boot-starter-tomcat <scope>provided </dependency> </dependencies> </project>
note:查阅87.1 创建一个可部署War文件了解更多怎么创建一个可部署war文件的细节。
更高级的配置选项和例子在插件信息页面可找到。