es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El cambio de perfil no funciona con Gradle en JHipster 7.

Cambiar perfiles no funciona en una aplicación generada con jhipster (v7.3 y 7.4) y gradle. Seguí esto. Cuando corro desde la línea de comando gradlew -Pprod, la aplicación siempre comienza en el perfil dev:

No active profile set, falling back to default profiles: dev,api-docs

Creo que algo se rompió en los generadores ya que nadie está proporcionando la propiedad spring.profiles.active. Echo de menos it.replace('#spring.profiles.active#', profiles)} en el archivo profile_prod.gradle que vi en versiones anteriores. Lo agregué, ahora application.yml en la carpeta build contiene spring: profiles: active: prod, pero la aplicación sigue predeterminando a dev.

Este es mi profile_prod.gradle:

dependencies {
    testImplementation "com.h2database:h2"
}
def profiles = "prod"
if (project.hasProperty("no-liquibase")) {
    profiles += ",no-liquibase"
}
if (project.hasProperty("api-docs")) {
    profiles += ",api-docs"
}
springBoot {
    buildInfo()
}
bootRun {
    args = []
}
processResources {
    println 'I'm running -Pprod!'
    inputs.property('version', version)
    inputs.property('springProfiles', profiles)
    filesMatching("**/application.yml") {
        filter {
            it.replace("#project.version#", version)
        }
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Problema: Cambiar perfiles no funciona en una aplicación JHipster generada con Gradle

    Al ejecutar una aplicación generada con JHipster (versiones 7.3 y 7.4) y Gradle, cambiar los perfiles no funciona. La aplicación siempre se inicia en el perfil “dev”, incluso al ejecutar gradlew -Pprod.

    Causa

    Parece que la propiedad spring.profiles.active no se está configurando, lo que hace que la aplicación se ejecute con el perfil “dev” por defecto.

    Solución

    Para solucionar este problema, deberá agregar el siguiente código al archivo profile_prod.gradle:

    processResources {
        println 'I\'m running -Pprod!'
        inputs.property('version', version)
        inputs.property('springProfiles', profiles)
        filesMatching('**/application.yml') {
            filter {
                it.replace('#project.version#', version)
                      .replace('#spring.profiles.active#', profiles)
            }
        }
    }
    

    Este código asegura que la propiedad spring.profiles.active se configure en “prod” en el archivo application.yml durante la compilación.

    Código actualizado de profile_prod.gradle:

    dependencies {
        testImplementation "com.h2database:h2"
    }
    
    def profiles = "prod"
    if (project.hasProperty("no-liquibase")) {
        profiles += ",no-liquibase"
    }
    if (project.hasProperty("api-docs")) {
        profiles += ",api-docs"
    }
    
    springBoot {
        buildInfo()
    }
    
    bootRun {
        args = []
    }
    
    processResources {
        println 'I\'m running -Pprod!'
        inputs.property('version', version)
        inputs.property('springProfiles', profiles)
        filesMatching('**/application.yml') {
            filter {
                it.replace('#project.version#', version)
                      .replace('#spring.profiles.active#', profiles)
            }
        }
    }
    

    Después de realizar estos cambios, al ejecutar gradlew -Pprod, la aplicación debería iniciarse en el perfil “prod”.

    Espero que esto ayude a resolver el problema. ¡Háganme saber si tienen alguna pregunta!

Comments are closed.