我想从中心位置向内部软件提供几个具有多个主要版本的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插件,但想在此之前获得有关通用方法的一些意见。