Замените заполнитель в файле на gradle

У меня есть задача 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?

Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
1
0
1 528
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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
}

Другие вопросы по теме