如何使用AppAssembler设置特定于环境的系统属性?

时间:2014-02-11 17:06:11

标签: java maven appassembler

我有一个应用程序,要求我在启动时设置系统属性,并且每个环境中的属性必须不同(即Dev中的一个值,Prod中的不同值)。

这类似于another unanswered question,但是那个人专门询问守护进程,我们正在使用Program脚本。解决方案可能是相同的,但我确实发现可能对JSW守护进程有特殊处理的提示。 unix模板有@ENV_SETUP@的占位符,the documentation表示environmentSetupFileName仅用于JSW。我会考虑使用environmentSetupFileName,但是我找不到有关如何使用它的更多信息,或者如何获取environmentSetupFileName期望它们所在的bin目录中的其他脚本。

这似乎是一个常见的问题,我很惊讶答案不容易找到。如何使用AppAssembler设置特定于环境的系统属性?

2 个答案:

答案 0 :(得分:1)

您可以将环境变量放在extraJvmArguments中,例如

<extraJvmArguments>-Dapp.contextPath=${APP_CONTEXT_PATH}</extraJvmArguments>

由于APP_CONTEXT_PATH在打包期间无法解决, 它将保留在由appassembler生成的脚本中的这种形式。

然后在部署期间设置此env变量。 如果你使用docker,这非常方便。

答案 1 :(得分:0)

首先,我必须说您的假设环境设置文件仅适用于JSW,这是不正确的。医生说:

  

在执行之前调用$ BASEDIR / bin中的安装文件。

     

注意:仅适用于jsw平台。如果此可选环境文件也设置了   WRAPPER_CONF_OVERRIDES变量,它将被传递给JSW native   launcher的命令行参数覆盖wrapper.conf   属性。看到   http://wrapper.tanukisoftware.com/doc/english/props-command-line.html   详情。

JSW的概念仅与Note有关,这意味着您可以定义特殊变量来覆盖包装器配置文件。我认为应该改进(created a ticket for that)。

环境设置文件的定义只是说生成的脚本将调用给定的安装文件。如果你想将其他文件添加到bin文件中而不是轮到你了。

此外,如果您了解您的要求是正确的,您需要创建不同的包Dev,Prod等,其中值不同。这意味着您需要为Dev创建一个包,为Prod创建一个包。 这意味着有几个appassembler-maven-plugin等的执行,可能是maven-assembly-plugin来创建一个合适的结果存档。