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

问题描述:

我正在尝试使用HTTPS支持设置TeamCity服务器。为此,我必须在…/conf/server.xml中指定密钥库文件路径和密钥库密码。如何在TeamCity的Tomcat配置(server.xml)中引用变量(JVM或环境)?

我现在的连接器定义有如下:

<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而不是尝试,你可以验证:

export JAVA_OPTS="$JAVA_OPTS $TEAMCITY_SERVER_OPTS"

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

可选,你可以前的execcatalina.sh这一行添加到configtest.sh