![e2b71ad75cc232048e16e9cf33ffe677.png](https://i-blog.csdnimg.cn/blog_migrate/933a18d9bf87ede8413503319935eafe.jpeg)
SrpingBoot提供了Maven和Gradle的构建插件。
一、 Maven Plugin
完整文档地址
1. 使用插件
1.1.1 maven配置
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot spring-boot-maven-plugin 2.2.2.RELEASErepackage
1.1.2 打包:在target里生成jar和jar.original
$ mvn package$ ls target/*.jartarget/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
如果在配置文件里没有配置 , 可以直接在命令行里指定repackage动作:
$ mvn package spring-boot:repackage$ ls target/*.jartarget/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
1.1.3 如果使用了里程碑或预览版,可以指定pluginRepository:
spring-snapshotshttps://repo.spring.io/snapshotspring-milestoneshttps://repo.spring.io/milestone
2. 打包可执行的jar和war包
1.2.1 配置jar/war
引用 spring-boot-maven-plugin插件后,它会自动尝试使用spring-boot:repakcage打包成可执行文件。 通过下面属性配置其是jar还是war
<?xml version="1.0" encoding="UTF-8"?>jar
1.2.2 配置主类
org.springframework.boot spring-boot-maven-plugin com.example.app.Main
运行:
$ mvn package$ java -jar target/mymodule-0.0.1-SNAPSHOT.jar
1.2.3 配置war同时又是可执行的、可部署到外部容器的
要标记内部嵌入式容器是provided:
<?xml version="1.0" encoding="UTF-8"?>warorg.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided
mvn package与repackage说明:
repackage 功能的 作用,就是在打包的时候,多做一点额外的事情:
- 首先 mvn package 命令 对项目进行打包,打成一个 jar,这个 jar 就是一个普通的 jar,可以被其他项目依赖,但是不可以被执行。
- repackage 命令,对第一步 打包成的 jar 进行再次打包,将之打成一个 可执行 jar ,通过将第一步打成的 jar 重命名为 *.original 文件
二、gradle plugin
Spring Boot Gradle Plugin提供了gradle的构建方式,可以打包可执行jar或war包、可执行的Spring Boot 应用程序。
完整文档参考:
- Reference (HTML and PDF)
- API
1. 引用插件
Groovy
plugins { id 'org.springframework.boot' version '2.2.2.RELEASE'}
单独使用插件时项目不用进行什么修改,插件会检测其它插件的变化并自动构建可执行jar的任务。 典型的spring引导项目至少应用groovy,java或org.jetbrains.kotlin.jvm插件和io.Spring.dependency-management插件,如:
apply plugin: 'java'apply plugin: 'io.spring.dependency-management'
2. 打包war
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa'}
3. 打包普通可执行jar
默认情况下,配置bootJar或bootWar时,jar或war任务是禁用的。通过启用jar或war任务,可以将项目同时配置为jar和war:
jar { enabled = true}
要避免jar和war生成在同一个目录,可以将其中一个配置不同位置:
bootJar { classifier = 'boot'}
4. 配置主类
bootJar { mainClassName = 'com.example.ExampleApplication'}
或使用:
springBoot { mainClassName = 'com.example.ExampleApplication'}
或配置项目属性:
mainClassName = 'com.example.ExampleApplication'
可以使用bootJar的manifest 属性配置开始类:
bootJar { manifest { attributes 'Start-Class': 'com.example.ExampleApplication' }}
三、Spring Boot AntLib模块
Spring Boot AntLib模块提供了Apache Ant的支持,可以使用这个模块创建可执行jar。
使用方式:在build.xml里 添加 spring-boot命名空间:
...
运行命令:
$ ant -lib
1. Spring Boot Ant 任务
声明spring-boot-antlib命名空间后,会创建下面两个任务:
- spring-boot:exejar
- spring-boot:findmainclass
3.1.1 spring-boot:exejar
使用 exejar任务构建SpringBoot可执行jar,下面是该任务支持的属性:
![6f57a787c0dda91ca32632cca4e53511.png](https://i-blog.csdnimg.cn/blog_migrate/77c16c1bad12a7da335b9782818e964c.jpeg)
下面是支持的元素:
![298a2a6927973567008ef08e67eb7e5c.png](https://i-blog.csdnimg.cn/blog_migrate/63a5874c37de1002fe704c897db635de.jpeg)
3.1.2 一个示例
指定启动类
检测启动类
2. spring-boot:findmainclass任务
exejar会使用findmainclass来定位启动函数。下面是支持的属性:
![934ded7315854539e7d320b582fcc1d7.png](https://i-blog.csdnimg.cn/blog_migrate/6ccaa19915d25567b9d3fc854281bffc.jpeg)
示例
Find and log Find and set Override and set
四、其它支持的构建工具
spring-boot-loader-tools支持开发自己的构建工具。