Есть ли лучший способ предоставить несколько основных версий XSD для клиентских приложений - PullRequest
0 голосов
/ 24 мая 2019

Я хочу предоставить пару файлов 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, но раньше хотел получить некоторые мнения об общем подходе.

...