Как обратиться к CSS начальной загрузки, который был загружен как зависимость gradle?

Мой вопрос заключается в том, что я не уверен, как ссылаться на загрузочную библиотеку, которая находится во "Внешних библиотеках" в моем проекте.

В файле build.gradle я добавил:
compile group: 'org.webjars', name: 'bootstrap', version: '3.3.7'

поэтому библиотека начальной загрузки была загружена. Но когда я хочу сослаться на него в 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 Project)

скачанную папку Bootstrap можно найти во внешних библиотеках

1 ответ

Gradle загружает и хранит зависимости локально. Он ссылается на артефакты из кэша всякий раз, когда это необходимо, IDE и компилятор получают путь к артефакту из кэша. Ссылка, которую вы в итоге включили, ссылается на файл из архива в кеше. Это не то, что понимает браузер.

Вам нужно использовать задачу копирования, чтобы разместить ее где-то в своем проекте, где вы сможете получить к ней доступ, или упаковать ее вместе с остальной частью вашего веб-сайта. Копирование конкретной зависимости уже решено. Вам нужно будет дополнительно извлечь артефакт. В документации есть примеры того, как читать содержимое архива.

Вот как может выглядеть законченное решение:

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

В случае, если вы хотите извлечь только конкретный файл или избавиться от номера версии, для упрощения обращения к нему это также возможно.

Обратите внимание, что это хорошая идея для извлечения в $buildDir поскольку с большинством плагинов, включая java, он автоматически очищается с помощью задачи "Очистить", и его сложнее случайно зафиксировать.

Другие вопросы по тегам