2014-01-15 7 views
11

Ich habe ein ant-Skript, das eine taskdef hat und die Aufgabe erstellt eine https-Internetverbindung und etwas mit dem SSL Zeug ist falsch. Daher möchte ich die Systemeigenschaft javax.net.debug=all einstellen, um weitere Informationen zu erhalten.Setze eine Systemeigenschaft mit ant

In Java würde ich dies mit der Option -D tun, aber in Ant wird dies für Ameisen Eigenschaften verwendet, die nicht das gleiche wie eine Systemeigenschaft ist.

Ist dies nicht ein taskdef wäre, sondern eine java Aufgabe konnte ich die sysproperty Eigenschaft verwenden, aber es ist kein java -task.

Googeln dafür ist frustrierend kompliziert, weil ant Eigenschaften und Systemeigenschaften in Ameise sind so ähnlich, dass die meisten Suchergebnisse über die andere (oder über die java-Task) sind.

Offensichtlich bin ich nicht der einzige mit dem Problem, aber andere Leute Fragen, die ich gefunden habe (like here) sind unbeantwortet oder ging für Hack (wie here).

Antwort

8

Eine Möglichkeit, eine solche Eigenschaft festzulegen, ist die Systemvariable ANT_OPTS. Sie müssen sehr vorsichtig sein, um nicht einfach Antworten überfliegen auf Google, dass Staat, die Optionen können auf diese Weise eingestellt werden, weil es so viel klingt nicht, was sie tut:

Die documentation sagt:

ANT_OPTS - Befehlszeilenargumente, die an die JVM übergeben werden sollen. Zum Beispiel können Sie hier Systemeigenschaften definieren oder die maximale Java Heap-Größe festlegen.

Wer hat das erwartet? ANT_OPTS sind Optionen für die JVM und nicht für Ameisen wie der Name vermuten lässt. Die Var, die für Ant-Optionen verwendet wird, heißt ANT_ARGS.

Jetzt kann ich Ant wie folgt starten: ANT_OPTS="-Djavax.net.debug=all" ant myTarget und kann Tonnen von Log-Ausgabe sehen.

(Allerdings bleibt die Frage offen, ob eine solche Variable mit XML gesetzt werden kann).

+0

Danke, diese Info helpeld mich sehr, als ich versuchte, herauszufinden, warum jenkins, wenn es in _build definiert einen "falschen" Wert annimmt -> Invoke Ant -> Properties_ z.B. 'user.name = prod'. Wenn es in _Java Options_ (verwendet ANT_OPS) als '-Duser.name = prod 'definiert ist, wird alles erwartet. Die Systemeigenschaft user.name wurde überschrieben. – timguy