У меня есть задача 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
?
Плагин генератора 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
}