Установите системное свойство с муравьем

У меня есть скрипт ant, у которого есть taskdef и задача создает https-соединение с Интернетом, и что-то taskdef на то, что материал SSL неправильный. Таким образом, я хочу установить системное свойство javax.net.debug=all чтобы получить дополнительную информацию.

В java я сделал бы это с помощью опции -D, но в ant это используется для свойств ant, которые не совпадают с системным свойством.

Если бы это не было taskdef а вместо java задачи, я мог бы использовать свойство sysproperty, но это не java -task.

Googling для этого является разочаровывающим, потому что свойства и свойства ant в ant настолько похожи, что большинство результатов поиска о других (или о java -task).

Очевидно, что я не единственный с проблемой, но другие вопросы, которые я нашел (например, здесь), остались без ответа или пошли на взломы (как здесь).

Ответ 1

Одним из способов установки такого свойства является системная переменная ANT_OPTS. Вы должны быть очень осторожны, чтобы не просто пересказывать ответы на Google, которые утверждают, что параметры могут быть установлены таким образом, потому что это звучит так, как будто не то, что он делает:

В документации говорится:

ANT_OPTS - аргументы командной строки, которые должны быть переданы в JVM. Например, вы можете определить системные свойства или задать максимальный размер кучи Java здесь.

Кто, что ожидал этого? ANT_OPTS - это опции для JVM, а не для муравьев, как это предлагает название. ANT_ARGS который используется для опций ant, называется ANT_ARGS.

Теперь я могу запустить муравей вроде этого: ANT_OPTS="-Djavax.net.debug=all" ant myTarget и может видеть тонны выхода журнала.

(Однако это оставляет вопрос открытым, можно ли установить такую переменную с помощью XML).