0

We are Migrating from Grails 2 to Grails 4. Extremely simplified, our application.groovy is like this:

def someVar = [:]

environments {

  myGreatApp.brandMap = [
    'dev.analyzor1.com': someVar
  ]
}

This causes an error, complaining about the variable 'someVar' not created.

ERROR --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

io.micronaut.context.exceptions.ConfigurationException: Exception occurred reading configuration [application]: BUG! exception in phase 'class generation' in source unit 'Script1.groovy' tried to get a variable with the name someVar as stack variable, but a variable with this name was not created
    at io.micronaut.context.env.groovy.GroovyPropertySourceLoader.processInput(GroovyPropertySourceLoader.java:53)
    at io.micronaut.context.env.AbstractPropertySourceLoader.read(AbstractPropertySourceLoader.java:112)
    at io.micronaut.context.env.AbstractPropertySourceLoader.loadProperties(AbstractPropertySourceLoader.java:97)
    at io.micronaut.context.env.AbstractPropertySourceLoader.load(AbstractPropertySourceLoader.java:73)
    at io.micronaut.context.env.AbstractPropertySourceLoader.load(AbstractPropertySourceLoader.java:59)
    at io.micronaut.context.env.PropertySourceLoader.load(PropertySourceLoader.java:51)
    at io.micronaut.context.env.DefaultEnvironment.loadPropertySourceFromLoader(DefaultEnvironment.java:608)
    at io.micronaut.context.env.DefaultEnvironment.readPropertySourceList(DefaultEnvironment.java:541)
    at io.micronaut.context.DefaultApplicationContext$RuntimeConfiguredEnvironment.readPropertySourceList(DefaultApplicationContext.java:675)
    at io.micronaut.context.env.DefaultEnvironment.readPropertySources(DefaultEnvironment.java:463)
    at io.micronaut.context.env.DefaultEnvironment.start(DefaultEnvironment.java:324)
    at io.micronaut.context.DefaultApplicationContext$RuntimeConfiguredEnvironment.start(DefaultApplicationContext.java:647)

I am migrating a large application and stuff like this is all over, after moving code from Config.groovy and DataSource.groovy to application.groovy.

Is there a workaround for not being able to declare and use a variable in application.groovy? Thanks

mzimmermann
  • 1,002
  • 2
  • 9
  • 14

1 Answers1

0

Well, it turns out, just removing the "def" makes the error go away, like this:

someVar = [:] // was: def someVar = [:]

environments {

  myGreatApp.brandMap = [
    'dev.analyzor1.com': someVar
  ]
}

I cannot claim it works fully at runtime as the converted application is still far away from running, but at least syntactically this works.

mzimmermann
  • 1,002
  • 2
  • 9
  • 14