5.1. 应用程序主目录

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

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

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

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

    • 任务配置:

      task buildWar(type: CubaWarBuilding) {
          appHome = '${app.home}'
          // ...
      }
    • 构建了 WAR 之后 /WEB-INF/local.app.properties 文件的内容:

      cuba.logDir = ${app.home}/logs
      cuba.confDir = ${app.home}/${cuba.webContextName}/conf
      cuba.tempDir = ${app.home}/${cuba.webContextName}/temp
      cuba.dataDir = ${app.home}/${cuba.webContextName}/work
      ...
    • 命令行传递 app.home 系统参数:

      java -Dapp.home=/opt/app_home ...

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

    • 生成的目录结构:

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

    java -Dapp.home=/opt/app_home -jar app.jar