【发布时间】:2018-02-13 18:00:36
【问题描述】:
在设置 java-system 属性时,我们遇到了以下问题。
环境:Groovy 版本:2.4.12 JVM:1.8.0_141 供应商:Oracle Corporation 操作系统:Windows 7
a) 在一个 Groovy 脚本中设置和打印系统属性,例如setprop.groovy 作品:
System.properties.'abc' = '123'
assert '123' == System.properties['abc']
println System.properties["abc"]
结果:123
b) 尝试从另一个 JVM-Spawn 读取先前设置的属性,例如getprop.groovy 不起作用:
println System.properties["abc"]
结果:空
似乎设置属性并不是真正持久的。我应该怎么做,才能在 groovy 中保存真正持久的 java 环境变量?
【问题讨论】:
-
你是如何运行你的脚本的?这个问题缺乏上下文和一个显示您的问题的简单示例
-
我创建了两个 groovy 文件并从 shell 运行它们。我将在 git.bash、cmd 和 powershell 中进行尝试。
-
那么下面的答案是正确的
-
我的问题并没有用 Szymon 的回答解决,甚至他的写作也非常鼓舞人心。我正在寻找一个解决方案,来自一个 groovy 脚本,它使环境属性持久化。第二个 groovy 只是一个测试,用于读取不在同一个 JVM-Spawn 内的变量。它可以由 maven、gradle、ant 或 JVM 之外的任何东西读取,我想设置 Environment-Property。
-
听起来你没有准确地定义你的问题。您可以在下面找到详细的答案,为什么您对设置系统属性的期望是错误的。您可以查看有关如何尝试从 Java 程序中导出 env 变量的问题(这是一个 hack,而不是解决方案)-stackoverflow.com/questions/318239/… 或者,您可以使用文件、数据库、队列等在程序之间共享数据。如果您正在寻找一些快速和简单的东西 - 将您的数据写入文件并从其他程序中读取。并注意可能的竞争条件。
标签: groovy windows-7-x64 system-properties