Замените заполнитель в файле с Gradle - PullRequest
1 голос
/ 08 апреля 2019

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

1 Ответ

1 голос
/ 08 апреля 2019

Плагин генератора сваггера ищет файл, который немного усложняет эту задачу, чем просто выполняет разбор строк и заменяет токен.

Решение может заключаться в том, чтобы рассматривать файл конфигурации как сгенерированный вход дляgenerateSwaggerCode задача.Это можно сделать с помощью задачи копирования, которая копирует ваш swaggergen-config.json «шаблон» и заменяет {version} токеном rootProject.version с использованием фильтра ant 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...