Как добавить ресурсы в sourceSet с помощью gradle?
В настоящее время у меня есть следующий файл build.gradle:
apply plugin: 'java'
repositories {
mavenCentral()
}
sourceSets {
main {
java {
srcDir 'src/model'
}
resources {
srcDir 'images/model'
}
}
test {
java {
srcDir 'tests/model'
}
resources {
srcDir 'images/model' // <=== NOT WORKING
}
}
}
dependencies {
compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
runtime fileTree(dir: 'libs', include: '*.jar')
testCompile group: 'junit', name: 'junit', version: '4.+'
}
Мой репозиторий, если здесь: https://github.com/quinnliu/WalnutiQ
и 4 из моих 49 тестов терпят неудачу, потому что тесты в папке "тесты/модель" нуждаются в файле в папке "images/model". Как правильно добавить ресурсы? Спасибо!
Ответы
Ответ 1
Я поближе посмотрел на ваш build.gradle, и кажется, что пути немного отключаются.
Вы указываете источник как src/model
, но ваша структура проекта и источник Java предполагают, что model
- это ваше имя пакета, что означает, что объявление источника должно быть:
main {
java {
srcDir 'src'
}
}
То же самое для тестов:
test {
java {
srcDir 'tests'
}
}
Теперь, с недостающими ресурсами. В вашем коде вы используете ImageIO.read(getClass().getResource(BMPFileName))
getClass().getResource()
использует относительный путь к ресурсу. Чтобы ресурсы были на одном уровне, вы должны обновить объявление для ресурсов и удалить model
:
test {
java {
srcDir 'tests'
}
resources {
srcDir 'images'
}
}
Здесь результат с обновленным build.gradle:
![enter image description here]()
Надеюсь, это поможет:)
Ответ 2
Синтаксис, используемый в вашей сборке script, верен. Мне непонятно, почему вы добавляете один и тот же каталог ресурсов в оба набора источников, и почему вы утверждаете, что он не работает в одном случае.
srcDir "foo"
добавляет другой каталог. Если вместо этого вы захотите заменить каталог по умолчанию, используйте srcDirs = [ "foo" ]
. Однако это не решит проблему.
Было бы неплохо увидеть код, который загружает ресурсы, чтобы исключить любые проблемы с этим.