如何在 TeamCity 的 Tomcat 配置 (server.xml) 中引用变量(JVM 或环境)?

How to reference variables (either JVM or environment) in TeamCity's Tomcat config (server.xml)?

我正在尝试设置支持 HTTPS 的 TeamCity 服务器。为此,我必须在 …/conf/server.xml.

中指定密钥库文件路径和密钥库密码

我当前的连接器在那里定义如下:

<Connector 
    …(some more attributes here)…
    keystoreFile="${keystore.path}" keystorePassword="${keystore.pass}"/>

每当我 运行 env TEAMCITY_SERVER_OPTS="-Dkeystore.path='$KEYSTORE_PATH'" ./bin/configtest.sh,我都会收到这样的错误:

WARNING: configured file:[/home/app/teamcity/${keystore.path}] does not exist.

/home/app/teamcity/ 是解压 TeamCity 的地方) (KEYSTORE_PATH是一个正确定义的环境变量,我可以写一个具体的值来代替,结果是一样的)

这意味着,TEAMCITY_SERVER_OPTS 并不是真正用于为 TeamCity 服务器设置任意 JVM 选项,对吗?

如果是这样,我如何传递一些值并在配置中使用它们?我认为对它们进行硬编码是不好的。

(如果这很重要,我在这里使用 Ubuntu 14.04)

TEAMCITY_SERVER_OPTS 用于传递额外的 JVM 选项,但仅当您 运行 teamcity-server.sh 脚本时才这样做。 configtest.sh 是 Tomcat 发行版的一部分,在这种情况下不知道 TeamCity 变量。如果您尝试使用 JAVA_OPTS,您可以验证:

env JAVA_OPTS="-Dkeystore.path='$KEYSTORE_PATH'" ./bin/configtest.sh

您可以选择将此行添加到 configtest.sh 之前 catalina.shexec:

export JAVA_OPTS="$JAVA_OPTS $TEAMCITY_SERVER_OPTS"