Java Ant - как передать аргументы задачи ProGuard и использовать их внутри файла конфигурации? - PullRequest
3 голосов
/ 10 августа 2011

У меня есть это в моем build.xml:

<target depends="build-jar" name="proguard">
    <taskdef resource="proguard/ant/task.properties" classpath="tools/proguard4.6/lib/proguard.jar" />
    <proguard configuration="ant/proguard.conf" />
</target>

Работает нормально.

Внутри файла конфигурации (т.е. "ant / proguard.conf") я пытаюсьДоступ к свойствам, определенным в этом файле build.xml, но я всегда получаю такую ​​ошибку:

Value of system property 'jar.final_name' is undefined in '<jar.final_name>' in line 1 of file '.......\ant\proguard.conf'

Ошибка ясна.Вопрос в том, как мне сделать то, что я пытаюсь сделать?
Если бы я сделал это «Параметры конфигурации Embedded ProGuard», я мог бы использовать эти свойства, как и любое другое свойство в build.xml, но я пытаюсь сохранитьфайлы разделяются.

Как мне тогда это сделать?

1 Ответ

6 голосов
/ 12 августа 2011

По умолчанию Ant не предоставляет способ установить свойства системы Java для своих задач.Вы можете указывать только опции -D в системной переменной ANT_OPTS при запуске самого Ant.

Я рассмотрю возможность поддержки использования свойств Ant в ссылочных конфигурациях ProGuard (будучи разработчиком ProGuard).

В настоящее время приемлемым решением может быть указание входных и выходных jar-файлов в XML-стиле Ant:

<proguard configuration="ant/proguard.conf">
  <injar      name="${injar}" />
  <outjar     name="${outjar}" />
  <libraryjar name="${java.home}/lib/rt.jar" />
</proguard>

Эта часть конфигурации в любом случае более тесно связана со скриптом Ant.

...