1

我正在使用 Jenkins CI 从execute shell构建步骤运行 java:

java -jar -Dadmin.hostname=$hostname -Dschema_name=$schema myapp.jar

我注意到虽然这两个参数hostnameschema都定义得很好并且在运行时具有非空值,但 Jenkins 以以下方式解析它:

java -jar -Dadmin.hostname= -Dschema_name=MYDB myapp.jar

意思admin.hostname值没有被解析。

我已经跟踪了这个问题,并注意到当我不在.参数名称中使用时,一切都会被解析好。

我想知道这可能是 Java 命令行的限制还是 Jenkins 中的错误。(我正在使用 RHEL64)

谢谢

编辑:我认为这是参数化构建 jenkins 插件的错误,因为.在其他构建中使用效果很好。

4

1 回答 1

3

也许问题在于 UNIX 上的环境变量区分大小写

$ echo $hostname

$ echo $HOSTNAME
myhostname

使用应该没有任何问题,.因为可能内置的属性会使用它们。

顺便说一句:仅仅因为属性设置为空白并不意味着它没有设置。

System.out.println("not.set=" + System.getProperty("not.set"));
System.out.println("admin.hostname='" + System.getProperty("admin.hostname")+"'");

-Dadmin.hostname=打印时运行

not.set=null
admin.hostname=''
于 2012-04-16T09:15:51.977 回答