【问题标题】:How to build a .war file for deployment using gradle如何使用 gradle 构建用于部署的 .war 文件
【发布时间】:2019-11-03 18:59:27
【问题描述】:

所以我第一次尝试使用 spring boot,它运行良好,但我不知道如何构建 .war 文件以部署到我的个人服务器。我已经阅读了 Spring 网站上的十几个或更多博客文档,但我就是不知道如何构建 .war。

我正在使用 intellij、kotlin 和 gradle。任何为我指明正确方向的帮助将不胜感激。

这是我的 gradle 文件的样子:

import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.springframework.boot.gradle.tasks.bundling.BootJar
import org.springframework.boot.gradle.tasks.bundling.BootWar

plugins {
    kotlin("plugin.jpa") version "1.2.71"
    id("org.springframework.boot") version "2.1.6.RELEASE" 
    id("io.spring.dependency-management") version "1.0.7.RELEASE"
    kotlin("jvm") version "1.2.71"
    kotlin("plugin.spring") version "1.2.71"

    war


}

apply(plugin = "io.spring.dependency-management")

the<DependencyManagementExtension>().apply {
    imports {
        mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
    }
}



. . . .

dependencies {
    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-mustache")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    developmentOnly("org.springframework.boot:spring-boot-devtools")
    runtimeOnly("com.h2database:h2")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

tasks.getByName<Jar>("jar") {
    enabled = true
}

tasks.getByName<War>("war") {
    enabled = true
}

tasks.getByName<BootJar>("bootJar") {
    classifier = "boot"
    mainClassName = "com.daniel.we_adventurers"
    launchScript()

    manifest {
        attributes("Start-Class" to "com.daniel.we_adventurersn")
    }
}



tasks.getByName<BootWar>("bootWar") {
    classifier = "boot2"
    mainClassName = "com.daniel.we_adventurers"
    launchScript()

    manifest {
        attributes("Start-Class" to "com.daniel.we_adventurers")
        attributes("Main-Class" to "org.springframework.boot.loader.PropertiesLauncher")
    }

}


}

【问题讨论】:

    标签: spring-boot gradle kotlin java-war


    【解决方案1】:

    假设您已使用 https://start.spring.io/ 创建项目,然后只需按照文档创建 war 存档:

    https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#packaging-executable-wars

    如果您没有使用https://start.spring.io/ 创建它,那么我建议从那里创建一个并将其用作更新您当前项目的参考。

    【讨论】:

    • 我正在使用 start.spring.io(它非常漂亮)。我也尝试按照您链接的说明进行操作。但是,在我构建文件之后,没有 .war 文件。只是 war/MANIFEST.MF 我已将我的 gradle 代码添加到我的问题中。
    • 如果您只是将他们引导到一个站点寻求解决方案,那么这个答案的意义何在?
    【解决方案2】:

    我知道你问已经有一段时间了,而且,自从我遇到你的问题,我想说你的问题很可能与这条线有关:

    developmentOnly("org.springframework.boot:spring-boot-devtools")
    

    请在Spring Boot Application Deployment Issue 处查看我对其他问题的回答。

    它应该会引导你走向正确的方向。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      相关资源
      最近更新 更多