Set a system property with ant

yankee picture yankee · Jan 15, 2014 · Viewed 17.8k times · Source

I have an ant script which has a taskdef and the task creates an https internet connection and somethin with that SSL stuff is wrong. Thus I want to set the system property javax.net.debug=all to get some more information.

In java I would do this using the -D option, but in ant this is used for ant properties which is not the same as a system property.

If this wouldn't be a taskdef but instead a java task, I could use the sysproperty property, but it is no java-task.

Googling for this is frustratingly complicated because ant properties and system properties in ant are so similar that most search results are about the other (or about the java-task).

Obviously I am not the only one with the problem, but other people's questions that I have found (like here) are unanswered or went for hack (like here).

Answer

yankee picture yankee · Jan 15, 2014

One way to set such a property is the ANT_OPTS system variable. You have to be very carefully to not simply skim over answers on google that state that options can be set that way, because it sounds so much like not what it does:

The documentation says:

ANT_OPTS - command-line arguments that should be passed to the JVM. For example, you can define system properties or set the maximum Java heap size here.

Who what have expected that? ANT_OPTS are options for the JVM and not for ant like the name suggests. The var which is used for ant options is called ANT_ARGS.

Now I can launch ant like this: ANT_OPTS="-Djavax.net.debug=all" ant myTarget and can see tons of log output.

(However this leaves the question open whether such a variable can be set using XML).