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