Gradle没有将WebJar内容放入我的Jar文件中的正确位置

时间:2017-10-21 16:13:31

标签: java spring-boot gradle webjars

我有一个基本的Java应用程序,我想使用WebJars。我使用Gradle作为我的构建系统。我想使用WebJars for Bootstrap和JQuery,因此我可以在Spring-Boot / ThymeLeaf应用程序中轻松引用和更新它们。该应用程序基本上是位于here

的表单教程中的应用程序

据我了解,Gradle应将WebJars中的所有文件放入Jar文件中的META-INF文件夹中。如果我正确理解了所有内容,那么当我在以META-INF/开头的html页面中引用某些内容时,Spring-Boot资源处理程序将从/webjars/加载资源

不幸的是,这还不行。因为我在Tomcat的日志输出中看到资源处理程序已正确安装。我决定检查文件是否实际上在我的Jar文件中。

当我提取我的Jar文件时,META-INF文件夹只有一个名为MANIFEST.MF的文件,其中包含有关Spring Boot的一些信息。在BOOT-INF/lib中有一个BootStrap-3.3.7.Jar和一个JQuery-3.2-1.Jar文件,但我认为这不应该是它们应该最终结束的地方。 (或者我错了,资源处理程序中的某处有错误吗?)。

运营gradle build时如何告诉gradle使用这些文件做正确的事?

我的gradle.build文件如下所示:

buildscript {
    ext {
        springBootVersion = '1.5.8.RELEASE'
    }
    repositories {
        mavenCentral()      
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")        
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: "jacoco"

jar {
    baseName = 'gs-serving-web-content'
    version =  '0.0.1'
}

bootRun {
    addResources = true
}

repositories {
    mavenCentral()  
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    compile("org.webjars:jquery:3.2.1")
    compile("org.webjars:bootstrap:3.3.7")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}   

1 个答案:

答案 0 :(得分:1)

Gradle正在做正确的事情,因为罐子应该打包在BOOT-INF/lib中。然后将BOOT-INF/lib中每个jar的根添加到类路径中,其中应找到META-INF内容中每个与webjar相关的内容。

我建议提出另一个问题,重点关注您的应用程序在运行时所做的事情。据我所知,一切都在建设时起作用。