首页 > 解决方案 > Spring Boot + Vaadin 14 + bootJar + Gradle 示例

问题描述

我有一个在 STS IDE 中运行的应用程序......我认为构建一个可运行的 jar 会很简单,因为它是一个 Spring Boot 应用程序,但现在我不再确定了。关于如何构建前端包并允许将其打包在可运行的 jar 中,似乎没有任何明确的指南。我尝试了 Gradle 的 Vaadin 插件,但我无法让它工作......在某个地方有一个工作示例吗?

谢谢。

这是 build.gradle 的要点

plugins {
    id 'org.springframework.boot' version '2.4.0'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
    id 'com.vaadin' version '0.14.3.7'
}

group = 'dsto.eosil.cc'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
    maven {
        url 'http://maven.vaadin.com/vaadin-addons'
    }
}

ext {
    set('vaadinVersion', "14.4.4")
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.vaadin:vaadin-spring-boot-starter'
    implementation 'org.liquibase:liquibase-core'
    
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'org.postgresql:postgresql'
    annotationProcessor 'org.projectlombok:lombok'
    
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
    testImplementation 'org.springframework.security:spring-security-test'
    testImplementation 'org.springframework.amqp:spring-rabbit-test'
    testImplementation 'com.h2database:h2'
}

dependencyManagement {
    imports {
        mavenBom "com.vaadin:vaadin-bom:${vaadinVersion}"
    }
}

test {
    useJUnitPlatform()
}

vaadin {
    productionMode=true
    pnpmEnable=true
}

defaultTasks("clean", "vaadinBuildFrontend", "bootJar")

当我最终构建了前端并将其打包到 jar 文件中时,我运行它,发现前端已损坏。浏览器给我这个错误...

浏览器中的vaadin捆绑错误

标签: spring-bootgradlevaadinexecutable-jar

解决方案


最终发现这是由于组件已弃用(我对 Vaadin 依赖项不满意)。某处发生了故障,但错误出现在看似完全无关的事情中。在这种情况下,我需要升级的是 apexcharts。


推荐阅读