Uso de la expansión de propiedad Gradle en Kotlin / Spring Boot
Actualmente estoy construyendo un service Kotlin
, Spring Boot
usando gradle como la herramienta de compilation. Estoy intentando expandir automáticamente las properties encontradas en mi file application.properties
, usando los pasos que se encuentran aquí:
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-automatic-expansion-gradle
- Posición incorrecta de PopupWindow dentro de RecyclerView después de notifyItemChanged
- ¿Puedes usar un object que está sincronizado como un candado
- Kotlin coroutines en Android: ¿Por qué usar bg () de Anko en lugar de async ()?
- Devoluciones de llamada de Android y reutilización de código
- Mocking interfaces genéricas con Kotlin y Mockito
Mis versiones son las siguientes:
- kotlin: 1.1.4-3 - spring boot: 1.5.6.RELEASE - gradle: 3.5.1
Cuando ejecuto un ./gradlew bootRun
, ./gradlew bootRun
el siguiente error:
java.lang.IllegalArgumentException: Could not resolve placeholder 'myServiceName' in value "${myServiceName}"
Seguido por:
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@510aeb93: startup date [Fri Sep 15 10:59:51 AEST 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@68edf5bb
build.gradle:
apply plugin: 'kotlin' apply plugin: 'kotlin-spring' apply plugin: 'org.springframework.boot' processResources { filesMatching('application.properties') { expand(project.properties) } }
gradle.properties:
myServiceName=potato-service
application.properties:
info.app.name=${myServiceName}
Estos errores aparecen después de que la aplicación ha comenzado y Spring está intentando cargar el file de properties.
Lo interesante es que si cambio la variable que estoy tratando de sustituir en application.properties, por ejemplo, myServiceName123, gradle falla en la etapa processResources.
- ¿Kotlin no ve los accesorios de Java Lombok?
- Kotlin Reflection Issue
- Kotlin sintético en adaptador o ViewHolder
- ¿Por qué agregar una Vista a mi layout cambia el ancho de todo el layout?
- ¿Cómo usar la expresión Lamba para hacer que las llamadas al método Java sean less detalladas en Kotlin?
- La label no denota un bucle en paraCada
- Objeto burlado con Mockito Kotlin Método de anulación
- ¿Cómo almacenar variables temporales al inicializar un object Kotlin?
Entonces, había una pequeña parte de mi build.gradle que no incluí arriba porque no sabía nada al respecto:
bootRun { addResources = true }
De acuerdo con los Spring Boot Docs que tengan el indicador addResources establecido en true, ignorará el file application.properties creado en el paso processResources y, en su lugar, usará el que está en las fonts de sus proyectos. Esto es para permitirle cambiar dinámicamente el file sin necesidad de reiniciar la aplicación.
La solución correcta para esto (si necesita expansión variable cuando se ejecuta con la tarea bootRun
) es establecer:
bootRun { addResources = false }
De lo contrario, si solo necesita expansión al build su jar, dejar esta bandera como true
debería estar bien.
- agregar fragment en la actividad del fragment no funciona en Pixel XL versión de Android 8.0.0
- ¿Cómo paso una matriz de objects de Android a React Native?