如何引用作为gradle依赖项下载的bootstrap的CSS?

时间:2016-09-13 11:34:07

标签: css twitter-bootstrap intellij-idea gradle

我的问题是,我不确定如何引用项目中“外部库”中的引导库。

在build.gradle文件中,我添加了:
compile group: 'org.webjars', name: 'bootstrap', version: '3.3.7'

所以下载了bootstrap库。 但是当我想在html文件中引用它并尝试使用复制路径函数时,我得到了这个:

C:\Users\Michael\.gradle\caches\modules-2\files-2.1\org.webjars\bootstrap\3.3.7\d6aeba80236573ed585baa657dac2b951caa8e7e\bootstrap-3.3.7.jar!\META-INF\resources\webjars\bootstrap\3.3.7\css\bootstrap.css

还尝试了这个'标准'路径(不工作):

<link rel="stylesheet" href="../css/bootstrap.min.css">    

我正在使用Intellij(gradle项目)

the downloaded Bootstrap folder can be found under external libraries

1 个答案:

答案 0 :(得分:0)

Gradle在本地下载和cahces dependecies。它会在需要时引用缓存中的工件,IDE,编译器都从缓存中获取工件的路径。 最终包含的引用引用缓存中存档中的文件。这不是浏览器所理解的。

您需要使用Copy Task将其放置在您可以访问它的项目中的某个位置,或者将其与您网站的其余部分一起打包。 复制特定依赖项为already addressed。 您需要另外提取工件。该文档包含有关如何read archive contents

的示例

这里有一个完整的解决方案:

apply plugin: "java"

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.webjars', name: 'bootstrap', version: '3.3.7'
}

task copyBootstrap(type: Copy) {
   configurations.compile
     .files({ it.group.equals("org.webjars")})
     .each {
      from zipTree(it)
     }
   into "$buildDir/static_resources"
}

这会将您要查找的文件放在我的系统上的以下位置(Gradle 2.14.1):

build/static_resources/META-INF/resources/webjars/bootstrap/3.3.7/css/bootstrap.min.css

如果您只想提取特定文件或删除版本号,以便更容易引用that's also possible

请注意,在$buildDir中提取是一个好主意,因为大多数插件(包括java)都会被Clean任务自动清理,而且很难意外清理承诺。