Gradle 没有将 WebJar 内容放入我的 Jar 文件中的正确位置
Gradle is not place WebJar contents into the correct place in my Jar file
我有一个基本的 Java 应用程序,我想在其中使用 WebJars。我使用 Gradle 作为我的构建系统。我想将 WebJars 用于 Bootstrap 和 JQuery,这样我就可以在我的 Spring-Boot/ThymeLeaf 应用程序中轻松引用和更新它们。该应用程序基本上是位于 here
的表单教程中的应用程序
据我了解,Gradle 应该将 WebJars 中的所有文件放入我的 Jar 文件中的 META-INF 文件夹中。如果我理解正确,当我在 html 页面中引用以 /webjars/
开头的内容时,Spring-Boot 资源处理程序将从 META-INF/
加载资源
不幸的是,这还行不通。因为我在 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")
}
Gradle 做对了,因为罐子应该打包在 BOOT-INF/lib
中。然后将 BOOT-INF/lib
中每个 jar 的根添加到类路径中,从那里可以找到 META-INF
内容中每个与它的 webjar 相关的内容。
我建议您再问一个问题,重点关注您的应用程序在运行时做什么。据我所知,构建时一切正常。
我有一个基本的 Java 应用程序,我想在其中使用 WebJars。我使用 Gradle 作为我的构建系统。我想将 WebJars 用于 Bootstrap 和 JQuery,这样我就可以在我的 Spring-Boot/ThymeLeaf 应用程序中轻松引用和更新它们。该应用程序基本上是位于 here
的表单教程中的应用程序据我了解,Gradle 应该将 WebJars 中的所有文件放入我的 Jar 文件中的 META-INF 文件夹中。如果我理解正确,当我在 html 页面中引用以 /webjars/
META-INF/
加载资源
不幸的是,这还行不通。因为我在 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")
}
Gradle 做对了,因为罐子应该打包在 BOOT-INF/lib
中。然后将 BOOT-INF/lib
中每个 jar 的根添加到类路径中,从那里可以找到 META-INF
内容中每个与它的 webjar 相关的内容。
我建议您再问一个问题,重点关注您的应用程序在运行时做什么。据我所知,构建时一切正常。