0

在 Config.groovy 中,我需要 $userHome 变量。它适用于我的开发机器,事实上我使用以下内容:

environments {
   development {
           grails.plugin.elfinder.rootDir = 
                   "${userHome}/docm_patients_doc/{patientcf}/"
            ...
    } 
   production {
           grails.plugin.elfinder.rootDir = 
                   "${userHome}/docm_patients_doc/{patientcf}/"
            ...
    } 
}

或者

 environments {
   development {
       grails.plugin.elfinder.rootDir =
             "${System.properties.'user.home'}/docm_patients_doc/{patientcf}/"
        ...
       }
  production {
       grails.plugin.elfinder.rootDir =
             "${System.properties.'user.home'}/docm_patients_doc/{patientcf}/"
        ...
       }
 }

在我的生产机器中,似乎 $userHomeusr/share/tomcat7不是正确的 Home 路径。为什么我会有这种行为?

4

1 回答 1

1

这可能正确的行为 - 看起来您的生产 Tomcat 以特定系统用户(可能称为 tomcat7 或类似用户)的身份运行,其主目录为/usr/share/tomcat7.

如果你想为开发和生产系统的配置选项设置不同的值,标准的方法是使用environments机制

// standard value
grails.plugin.elfinder.rootDir = "${userHome}/docm_patients_doc/{patientcf}/"    

environments {
  production {
    // override the value for the production environment
    grails.plugin.elfinder.rootDir = "/data/docm_patients_doc/{patientcf}/"    
  }
}

现在在开发模式下,它将使用涉及的标准路径,${userHome}但在生产模式下运行时(当您构建一个grails prod war并将其部署到 tomcat 时)它将使用environments块内部的设置。您也可以在内部设置一个development块,用于仅适用于开发模式的设置。environments

请注意,它Config.groovy是从上到下解析的,因此通用设置必须在特定于环境的设置之前。

于 2014-01-23T16:51:53.447 回答