#java #micronaut #micronaut-openapi
Вопрос:
Попытка выполнить конфигурацию swagger OAuth в последней версии Micronaut в соответствии с документацией micronuat https://micronaut-projects.github.io/micronaut-openapi/latest/guide/index.html#enableendpoints
swagger-ui.oauth2RedirectUrl
swagger-ui.oauth2.clientId
swagger-ui.oauth2.clientSecret
swagger-ui.oauth2.realm
swagger-ui.oauth2.appName
swagger-ui.oauth2.scopeSeparator
swagger-ui.oauth2.scopes
swagger-ui.oauth2.additionalQueryStringParams
swagger-ui.oauth2.useBasicAuthenticationWithAccessCodeGrant
swagger-ui.oauth2.usePkceWithAuthorizationCodeGrant
При настройке любого из этих свойств Micronaut создаст не только swagger-ui/index.html файл, но также и swagger-ui/oauth2-redirect.html один
Я вижу, что он создал файл oauth2-redirect.html с приведенным ниже кодом
tasks.withType(JavaCompile).all {
options.forkOptions.jvmArgs << '-Dmicronaut.openapi.views.spec=swagger-ui.enabled=true,swagger-ui.theme=flattop,swagger-ui.oauth2RedirectUrl=http://localhost:8080/swagger-ui/oauth2-redirect.html,swagger-ui.oauth2.clientId=myClientId,swagger-ui.oauth2.scopes=openid,swagger-ui.oauth2.usePkceWithAuthorizationCodeGrant=true'
}
Для oauth2.ClientID, oauth2RedirectUrl и oauth2.clientSecret эти значения различаются для каждой среды PROD, TEST, DEV, UAT. Установив значение, подобное приведенному выше коду, его трудно настроить для каждой среды. Есть ли лучший способ сделать это?
Ответ №1:
В моем проекте это было решено путем создания различных файлов свойств для каждого env и управления компиляцией с помощью параметров
tasks.withType(JavaCompile) {
String openapiPropertyFile = 'openapi/openapi-dev.properties'
if(project.hasProperty("openapiPropertyFile")){
openapiPropertyFile = project.property('openapiPropertyFile')
}
options.fork = true
options.forkOptions.jvmArgs << "-Dmicronaut.openapi.config.file=$openapiPropertyFile"
}
а потом вы строите его вот так
$ sh ./gradlew clean jib -PopenapiPropertyFile=openapi/openapi-uat.properties -PimageSuffix=-uat
Хотя я хотел бы знать, как сделать эту компиляцию после публикации, потому что в моем случае это вынуждает создавать отдельные образы докеров, где я хотел бы иметь один, а затем монтировать эти свойства.