2012-03-21 112 views
11

我想在我的一些配置设置grails-app/Config.groovy中包含Grails应用程序名称。我尝试了很多方法,但都没有成功。举例来说,如果我有我的Config.groovy以下,如何获取Config.groovy中的Grails应用程序名称?

edu.appname1 = "${grailsApplication.metadata.'app.name'}" 
edu.appname2 = "${application.metadata.'app.name'}" 
edu.appname3 = "${metadata.'app.name'}" 
edu.appname4 = "${app.name}" 

我可以运行在Grails的控制台这些语句

def edu = grailsApplication.config.edu 
println "${'''${grailsApplication.metadata.'app.name'} -> '''}${edu.appname1}" 
println "${'''${application.metadata.'app.name'}  -> '''}${edu.appname2}" 
println "${'''${metadata.'app.name'}     -> '''}${edu.appname3}" 
println "${'''${app.name}        -> '''}${edu.appname4}" 

,结果如下。

${grailsApplication.metadata.'app.name'} -> [:] 
${application.metadata.'app.name'}  -> [:] 
${metadata.'app.name'}     -> [:] 
${app.name}        -> [:] 

必须有某种方式来获取此信息。

回答

25

为了让应用程序的名字在你包括grails.config.locations配置文件你可以使用:

appName = grails.util.Metadata.current.'app.name' 
+0

谢谢。这正是我需要的。 – 2012-03-21 18:02:21

+0

我使用googling这个声明。它适用于grails 2.3.11。谢谢! – Tung 2016-03-21 13:49:41

+1

完美的是我所需要的。您也可以使用grails.util.Metadata.current.getApplicationName()作为等价物 – Nico 2016-09-21 13:03:17

2

试试这个:

edu.appname1 = appName 

,或者如果你想为一个较长的配置参数的一部分使用

edu.appname1 = "something.$appName.else" 
+0

谢谢。我以为我曾试过那个。 – 2012-03-21 17:24:28

+0

我的问题是,它在我通过'grails.config.locations'包含的文件中不可用。我将它保存到'Config.groovy'中的一个新属性中并使用它。 – 2012-03-21 17:39:02

相关问题