Я создал артефакт JAR, содержащий общие ресурсы, не относящиеся к исходному коду (например, изображения, файлы конфигурации Spring и т. Д.), И развернул артефакт в репозитории Nexus, используя идентификатор артефакта com.mycompany.myproject:common-resources:1.0-SNAPSHOT
.
Используя Gradle, я включаю эти ресурсы в другие проекты, извлекая файлы из архива и добавляя их в путь к классам следующим образом:
dependencies {
externalResource com.mycompany.myproject:common-resources:1.0-SNAPSHOT
}
task unzip(type: Copy) {
from zipTree(configurations.externalResource.singleFile).matching {
exclude('META-INF/')
}
into "$buildDir/resources/main/"
}
tasks.classes.dependsOn tasks.unzip
Этот блок кода многократно используется в нескольких файлах сборки Gradle.
Я хотел бы устранить дублирование кода. Каков наилучший способ сделать это?
В идеале я бы предпочел использовать что-то вроде
dependencies {
externalResource com.mycompany.myproject:common-resources:1.0-SNAPSHOT
}
в файлах сборки Gradle для модулей, которым требуются эти ресурсы и которые хранятся в другом месте.
Я попытался поместить определение задачи в отдельный файл resources.gradle и включить этот файл в build.gradle с помощью
apply from: "${rootProject.projectDir}/resources.gradle"
но я получаю следующую ошибку:
Ожидаемая конфигурация ': print-external-config: externalResource' для
содержит ровно один файл, но не содержит файлов.
где print-external-config
- имя модуля, требующего общих ресурсов.
Заранее спасибо.