问题 使用ant设置系统属性


我有一个蚂蚁脚本有一个 taskdef 并且该任务创建了一个https互联网连接,并且某些SSL内容是错误的。因此我想设置系统属性 javax.net.debug=all 获得更多信息。

在java中,我会使用 -D 选项,但在ant中,这用于与系统属性不同的ant属性。

如果这不是一个 taskdef 而是一个 java 任务,我可以使用 sysproperty 财产,但不是 java-任务。

谷歌搜索这是令人沮丧的复杂,因为蚂蚁的蚂蚁属性和系统属性是如此相似,以至于大多数搜索结果是关于另一个(或关于 java-任务)。

显然我不是唯一一个有这个问题的人,而是我找到的其他人的问题(像这儿)没有得到答复或去攻击(比如 这里)。


7162
2018-01-15 20:54


起源



答案:


设置这样一个属性的一种方法是 ANT_OPTS 系统变量。你必须非常小心,不要简单地浏览谷歌上的答案,说明选项可以这样设置,因为它听起来非常不像它做的那样:

文件 说:

ANT_OPTS - 应传递给JVM的命令行参数。   例如,您可以定义系统属性或设置最大Java   堆大小在这里。

谁有什么期望呢? ANT_OPTS是JVM的选项,而不是名称所暗示的ant。调用用于ant选项的var ANT_ARGS

现在我可以像这样启动ant: ANT_OPTS="-Djavax.net.debug=all" ant myTarget 并且可以看到大量的日志输出。

(但是这样就可以解决这个变量是否可以使用XML设置的问题)。


10
2018-01-15 20:54



谢谢,这个信息帮助了我很多,因为我试图弄清楚为什么jenkins如果在其中定义了“错误”值 构建 - >调用Ant - >属性 例如 user.name = prod。在定义时 Java选项 (使用ANT_OPS)作为 -Duser.name=prod 一切都有望。系统属性user.name被覆盖了。 - timguy


答案:


设置这样一个属性的一种方法是 ANT_OPTS 系统变量。你必须非常小心,不要简单地浏览谷歌上的答案,说明选项可以这样设置,因为它听起来非常不像它做的那样:

文件 说:

ANT_OPTS - 应传递给JVM的命令行参数。   例如,您可以定义系统属性或设置最大Java   堆大小在这里。

谁有什么期望呢? ANT_OPTS是JVM的选项,而不是名称所暗示的ant。调用用于ant选项的var ANT_ARGS

现在我可以像这样启动ant: ANT_OPTS="-Djavax.net.debug=all" ant myTarget 并且可以看到大量的日志输出。

(但是这样就可以解决这个变量是否可以使用XML设置的问题)。


10
2018-01-15 20:54



谢谢,这个信息帮助了我很多,因为我试图弄清楚为什么jenkins如果在其中定义了“错误”值 构建 - >调用Ant - >属性 例如 user.name = prod。在定义时 Java选项 (使用ANT_OPS)作为 -Duser.name=prod 一切都有望。系统属性user.name被覆盖了。 - timguy


您可以在xml中声明系统属性 <sysproperty key="key" value="value"/>

http://www.java2s.com/Code/Java/Ant/SetsystempropertiesinAntbuildscript.htm


0
2018-05-08 21:01



这只能用于java任务。请参阅我的问题中的第三段,其中指出:“如果这不是taskdef而是java任务,我可以使用sysproperty属性,但它不是java任务。” - yankee