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.

Pasar el carácter $ a los scripts de inicio de Gradle (complemento de la aplicación)

Tengo un script de construcción de Gradle que utiliza el complemento de Aplicación, y quiero pasar como argumento de JVM una cadena que contiene el carácter $, pero no puedo hacerlo porque siempre se convierte en la secuencia de caracteres \$

Aquí está mi configuración:

application {
    mainClass = 'example.Main'
    application.applicationDefaultJvmArgs = ['-javaagent:$APP_HOME/lib/agent.jar']
}

Pero luego en el script de inicio obtengo:

DEFAULT_JVM_OPTS='\"-javaagent:\$APP_HOME/lib/agent.jar\"'

Y debido a ese \ no funciona, necesito que el valor sea -javaagent:$APP_HOME/lib/agent.jar. Todas las formas que probé obtienen el mismo resultado (usando interpolación, pasando el $ como \u0024, etc.).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para pasar una cadena que contiene el carácter $ como argumento JVM en un script de construcción Gradle que utiliza el complemento Application, puedes escapar el carácter $ con la barra diagonal invertida \ en la propiedad applicationDefaultJvmArgs, de la siguiente manera:

    application {
        mainClass = 'example.Main'
        applicationDefaultJvmArgs = ['-javaagent:\$APP_HOME/lib/agent.jar']
    }
    

    Sin embargo, esto resultará en que la barra diagonal invertida se incluya en el script de inicio, lo cual ocasionará problemas. Para solucionar esto, puedes utilizar la Interpolación de Cadena Groovy para pasar el valor de la variable de entorno $APP_HOME en lugar de utilizar directamente el carácter $, de la siguiente manera:

    application {
        mainClass = 'example.Main'
        def appHome = System.getenv('APP_HOME')
        applicationDefaultJvmArgs = ["-javaagent:${appHome}/lib/agent.jar"]
    }
    

    Esto sustituirá el valor de la variable appHome en lugar de $APP_HOME, evitando la necesidad de escapar el carácter $ por completo.

Comments are closed.