在 Java 中我可以设置和获取系统属性
System.setProperty("key","value");
String value = System.getProperty("key");
我猜属性是在 Java 进程级别设置的,但我需要在更高级别设置属性,这是一个运行我开发的一些 Java 测试的 bash 进程,我不能使用 Java 系统属性,因为该值不会在我的测试运行中持续存在。
有没有办法在 bash 级别设置一个系统属性来运行我的子 Java 进程可以访问的测试。例如,我知道我可以使用 Java 在 Linux 机器上获取用户名。
String userName = System.getProperty("user.name");
所以我想知道是否有更高级别的方法至少在运行我的 Java 测试的 Bash 级别设置我自己的属性。
编辑
基本上,我想要一个变量 ranAtLeastOneTest
,然后在第一个测试运行后将此变量设置为 true
,然后允许其他测试访问此变量以了解是否至少一项测试是否运行。
最佳答案
只能为自己的进程及其子进程设置环境变量。子进程无法更改环境变量并且父进程可以看到此更改。
如果您想根据启动的 java 进程中发生的事情更改 bash 脚本中的某些内容,您有两种方法:
Java 进程以特定的退出代码退出。例如 0(零)表示至少运行了一项测试,1 表示未运行任何测试。 bash 脚本可以作用于退出代码。
bash 脚本监视 java 测试编写的输出。 (例如,java 的输出被写入文件,然后 bash 脚本检查输出(grep 等)。
如果 bash 脚本以其中一种方式检测到某些特殊情况,它可以更改环境变量或在启动下一个 java 进程时使用另一个 -Dxxx=yyy
参数。
关于java - 如何通过子 Java 进程访问的 Bash 设置系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54187704/