63.2 打包可执行jar和war文件
一旦spring-boot-maven-plugin
被包含到你的pom.xml
中,Spring Boot就会自动尝试使用spring-boot:repackage
目标重写存档以使它们能够执行。为了构建一个jar或war,你应该使用常规的packaging
元素配置你的项目:
<?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>
生成的存档在package
阶段会被Spring Boot增强。你想启动的main类即可以通过指定一个配置选项,也可以通过为manifest添加一个Main-Class
属性这种常规的方式实现。如果你没有指定一个main类,该插件会搜索带有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</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>
注 具体参考“Section 81.1, “Create a deployable war file”” 章节。
高级配置选项和示例可在插件信息页面获取。