我的gradle任务swagger-codegen
具有以下配置:
swaggerSources {
testProject {
inputFile = file("$buildDir/generated/input.json")
code {
language = 'csharp'
configFile = file('swaggergen-config.json')
}
}
}
文件swaggergen-config.json
包含:
{
"packageName": "Package.Test",
"packageVersion" : {version},
"netCoreProjectFile": true
}
如何用{version}
正确替换project.version
占位符?
答案 0 :(得分:1)
swagger生成器插件正在寻找一个文件,该文件会使它变得有点复杂,然后再进行字符串解析和替换令牌。
一个解决方案可能是将配置文件视为generateSwaggerCode
任务的生成输入。这可以通过复制任务完成,该任务将复制swaggergen-config.json
“模板”,并在复制过程中使用蚂蚁{version}
过滤器将rootProject.version
替换为令牌ReplaceTokens
。注意:不过,您需要将{version}
切换为蚂蚁风格的令牌格式(例如@version@
)。
然后可以将swaggerSources.code.configFile
闭包设置为使用新生成的配置。
这将被添加到您的build.gradle
:
task generateSwaggerGenConfig(type: Copy) {
from swaggergen-config.json
into $buildDir/generated/swaggergen-config.json
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens:['version:rootProject.version])
}
generateSwaggerCode.dependsOn generateSwaggerGenConfig
swaggerSources {
testProject {
inputFile = file("$buildDir/generated/input.json")
code {
language = 'csharp'
configFile = file("$buildDir/generated/swaggergen-config.json")
}
}
}
生成的swaggergen-config.json
看起来像这样
{
"packageName": "Package.Test",
"packageVersion" : @version@,
"netCoreProjectFile": true
}