Как использовать только ресурсный артефакт в качестве зависимости Gradle - PullRequest
0 голосов
/ 13 июня 2019

Я создал артефакт 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 - имя модуля, требующего общих ресурсов.

Заранее спасибо.

...