5.1. 应用程序主目录

应用程序主目录是一个文件系统目录,这里可以存放所有的 应用程序文件目录。这个目录在除了快速部署之外的其它全部部署场景都会使用。在后面的例子中,应用程序的目录都在特定的 Tomcat 文件夹中。

应用程序主目录即是所有应用程序目录的根目录。通常在 WAR 或者 UberJAR 包中的 /WEB-INF/local.app.properties 文件指定。

  • 如果构建一个 WAR 包,必须在 buildWar Gradle 任务中定义应用程序主目录的路径。可以设置为绝对路径或者相对路径,如果是相对路径的话,需要提前知道 WAR 将会被部署在服务器的哪个工作目录。如果不知道的话,可以用 Java 系统变量的占位符,然后在运行时提供真实路径。

在运行时设置应用程序主目录的示例:

  • 任务配置:
  1. task buildWar(type: CubaWarBuilding) {
  2. appHome = '${app.home}'
  3. // ...
  4. }
  • 构建了 WAR 之后 /WEB-INF/local.app.properties 文件的内容:
  1. cuba.logDir = ${app.home}/logs
  2. cuba.confDir = ${app.home}/${cuba.webContextName}/conf
  3. cuba.tempDir = ${app.home}/${cuba.webContextName}/temp
  4. cuba.dataDir = ${app.home}/${cuba.webContextName}/work
  5. ...
  • 命令行传递 app.home 系统参数:
  1. java -Dapp.home=/opt/app_home ...

设置 Java 系统参数的方式取决于应用程序服务。对于 Tomcat,推荐设置在 bin/setenv.sh (或者 bin/setenv.bat)文件内。

  • 生成的目录结构:
  1. /opt/app_home/
  2. app/
  3. conf/
  4. temp/
  5. work/
  6. app-core/
  7. conf/
  8. temp/
  9. work/
  10. logs/
  • 对于 UberJAR 的情况,应用程序主目录默认设置为工作目录,但是也可以通过 Java 系统参数 app.home 来重定义。所以如果需要跟上面提到的 WAR 的例子一样设定同样的主目录,可以通过命令行执行:
  1. java -Dapp.home=/opt/app_home -jar app.jar