在我的Groovy脚本中,我有这段代码:
def username = System.getenv()['USER']
def password = System.getenv()['PASS']
这是因为我不能将此信息用作Groovy脚本的参数,因为其他用户不应该知道它。当我运行此脚本时,我在我的系统中设置此参数。现在我有一个问题。我有一个远程运行Groovy脚本的Java应用程序。有没有办法在Java代码中设置环境变量? (Here我发现这是不可能的)。或者是否有一些安全的方法将这些属性从Java发送到Groovy?
答案 0 :(得分:1)
如果您使用Runtime.exec
(或类似)的最小公分启动groovy脚本,则可以在one of the overloaded methods中指定环境:
在具有指定环境的单独进程中执行指定的字符串命令。
...
envp
- 字符串数组,其中每个元素的格式为name = value的环境变量设置,如果子进程应继承当前进程的环境,则为null。
另一方面,如果您在同一Java进程中调用Groovy脚本,那么它将具有与正在运行的进程相同的属性。因此,在调用Groovy脚本之前简单地调用System.setProperty("USER", xxx)
将意味着Groovy逻辑可以看到此属性。
您应该注意环境是一个操作系统级别的东西;衡量运行进程的OS的属性。
如果您正在寻找应用级别的设置,那么您真的应该检查System.properties
。