为 Spring Boot 应用程序生成战争

Posted

技术标签:

【中文标题】为 Spring Boot 应用程序生成战争【英文标题】:Generating war for spring boot application 【发布时间】:2017-12-21 09:33:07 【问题描述】:

我一直在关注 spring 提供的教程,似乎无法理解为什么我的 .war 文件是空的。点击here查看/下载代码。最终目标是下载此文件,构建一个 .war 文件,然后将其部署到我的 tomcat 服务器。我已将以下内容添加到 build.gradle

应用插件:“战争”

但这只会产生一个包含零类文件的战争。

build.gradle

buildscript 
repositories 
    mavenCentral()

dependencies 
    classpath("org.springframework.boot:spring-boot-gradle 
plugin:1.5.3.RELEASE")



apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'

jar 
    baseName = 'gs-spring-boot'
     version =  '0.1.0'


repositories 
    mavenCentral()


sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies 
    compile("org.springframework.boot:spring-boot-starter-web")
    // tag::actuator[]
    compile("org.springframework.boot:spring-boot-starter-actuator")
    // end::actuator[]
    // tag::tests[]
    testCompile("org.springframework.boot:spring-boot-starter-test")
    // end::tests[]
 

【问题讨论】:

您是否也尝试过将 jar 块(带有 baseName 和版本)重命名为 war? 是的,但没有区别 【参考方案1】:

对于教程代码,你需要做两件事:

    用于打包的war插件spring-boot ref:

    apply plugin: 'war'
    
    war 
        baseName = 'gs-spring-boot'
        version =  '0.1.0'
        
    

    创建一个可部署的war文件spring-boot ref:

    @SpringBootApplication
    public class Application extends SpringBootServletInitializer 
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 
            return application.sources(Application.class);
        
    

并且还指定提供的tomcat依赖:

dependencies 
    // …
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    // …

这是我的commit reference 和结果:

【讨论】:

谢谢陈睿!我曾尝试为其提供运行时,但我不知道扩展 SpringBootServletInitializer。

以上是关于为 Spring Boot 应用程序生成战争的主要内容,如果未能解决你的问题,请参考以下文章

为 Spring Boot 嵌入式 tomcat 添加战争

我如何使用部署在战争 Spring Boot 应用程序中的 mysql jdbc 驱动程序

Tomcat中的spring-boot应用程序战争部署,现有的spring web应用程序失败

如何使用 Spring Boot“bootJar”插件创建 gradle 任务以生成爆炸性战争?

在tomcat 8上部署战争时未加载Spring Boot应用程序

如何将 Spring Boot 应用程序战争部署到 AWS Elastic Beanstalk?