Я хочу предоставить пару файлов xsd с несколькими основными версиями для собственного программного обеспечения из центрального места и не знаю, верен ли мой подход.
Несколько схем XML используются для проверки файлов XML. Они, в свою очередь, используются для передачи данных между (автономными) приложениями и хранения их на сетевом диске. Приложения должны поддерживать несколько основных версий и обеспечивать базовую функциональность при работе в автономном режиме.
Файлы xsd упакованы и загружены в Artifactory как один артефакт. Приложения используют Java и Gradle, но не следует исключать другие языки программирования и инструменты сборки. Текущее решение выглядит так:
configurations {
schemata_0
schemata_1
schemata_2
}
dependencies {
schemata_0 "com.pany.group:schemata:0.5.8"
schemata_1 "com.pany.group:schemata:1.4.5"
schemata_2 "com.pany.group:schemata:2.0.3"
}
def unzipBase = 'build/tmp/expandedArchives/'
task unzipSchemata_0(type:Copy) {
configurations.schemata_0.asFileTree.each {
from(zipTree(it))
into "${unzipBase}${it.name}"
}
}
task unzipSchemata_1(type:Copy) {
configurations.schemata_1.asFileTree.each {
from(zipTree(it))
into "${unzipBase}${it.name}"
}
}
task unzipSchemata_2(type:Copy) {
configurations.schemata_2.asFileTree.each {
from(zipTree(it))
into "${unzipBase}${it.name}"
}
}
sourceSets {
main {
resources {
srcDir(unzipBase)
}
}
}
processResources.dependsOn unzipSchemata_0, unzipSchemata_1, unzipSchemata_2
Я думал о том, чтобы разбить код на Gradle Plugin, но раньше хотел получить некоторые мнения об общем подходе.