从Maven迁移的Spring Boot Gradle项目,对应package阶段的任务是什么?
嘿,我刚好做过不少Maven转Gradle的Spring Boot项目,这个问题我太熟啦!
package 阶段的任务 对于Spring Boot项目来说,和Maven package 阶段功能完全匹配的是**bootJar**任务(如果你的项目是打包成JAR包的话)。
为什么是bootJar而不是普通的jar?
Maven的package阶段针对Spring Boot项目,最终产出的是包含所有依赖的可执行胖JAR;而Gradle自带的普通jar任务,只会生成仅含项目自身代码的瘦JAR,这和Maven原生jar插件的效果类似,并不是我们需要的完整可执行包。bootJar是Spring Boot Gradle插件提供的专属任务,它会把所有依赖打包进去,生成和Maven package后完全一致的可执行JAR,文件默认放在build/libs/目录下,对应Maven的target/目录。
如果你的项目是打包成WAR包部署的,那对应的就是**bootWar**任务,作用和bootJar一致,只是产出WAR格式的可执行包。
如何执行这个任务?
直接在命令行运行:
# Linux/macOS环境 ./gradlew bootJar
Windows环境下则用:
gradlew.bat bootJar
执行这个任务时,Gradle会自动触发它依赖的前置任务,比如compileJava、processResources、classes等,就像Maven的package会自动执行compile、test(默认情况)等前置阶段一样。
另外,如果运行./gradlew build,它会包含bootJar(或bootWar)以及测试、代码检查等全流程任务,相当于Maven的mvn clean install;但如果只需要完成打包动作,单独跑bootJar会更高效。
内容的提问来源于stack exchange,提问作者Dmitry Senkovich

