2014-01-15 2 views
11

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

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

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

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

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

ответ

8

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

documentation говорит:

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

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

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

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

+0

Спасибо, эта информация helpeld мне много, как я пытался выяснить, почему Дженкинс принимает «неправильную» значение, если она определена в _Build -> Invoke Ant -> Properties_ например 'user.name = prod'. Если определено в параметрах _Java Options_ (использует ANT_OPS) как '-Duser.name = prod', все будет работать. Системное свойство user.name было перезаписано. – timguy

0

Вы можете объявить свойства системы в xml с помощью <sysproperty key="key" value="value"/>.

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

+2

Это может использоваться только для java-задач. См. Третий абзац в моем вопросе, в котором говорится: «Если это не будет taskdef, а вместо java-задачи, я могу использовать свойство sysproperty, но это не java-задача». – yankee

Смежные вопросы