2012-05-07 2 views
3

Я использую задачу ProGuard ant, и все отлично, за исключением того, что мой файл конфигурации ProGuard огромен. Кроме того, в разных задачах используются разные файлы конфигурации ProGuard, и есть много копий, которые я хотел бы реорганизовать в отдельные файлы .pro.Несколько файлов конфигурации для задачи ProGuard Ant

<taskdef resource="proguard/ant/task.properties" classpath="C:/Program Files/proguard4.7/lib/proguard.jar"/> 
<target name="obfuscated_jar" depends="raw_jar"> 
    <proguard configuration="core.pro lib1.pro lib2.pro"> 
     <outjar path="prog_obfuscated.jar"/> 
    </proguard> 
</target> 

Вышеупомянутое не работает, поскольку оно обрабатывает несколько файлов .pro как одно большое имя файла. Я известный идиот w.r.t. муравей, я пропущу что-то очевидное? Благодаря!

ответ

5

Вы можете создать один основной .pro файл, содержащий -include параметры, указывающие на ваших фактических .pro файлов.

+1

Большое спасибо за ProGuard, это здорово! –

0

Похоже, что разрешен только один файл в атрибуте configuration.
Отредактировано
И атрибуты разрешены только на <proguard> элемент. У меня есть другое возможное решение. Попробуйте объединить ваши конфигурационные файлы в один с Ant concat-task и передать этот временный файл в атрибут <proguard configuration="">.


Кроме того, можно изменить ProGuardTask -класса принимать несколько файлов в качестве аргументов и сцепить их позже. И такой же результат может быть достигнут с помощью Ant macrodef.

+0

Пробовал, не повезло. 'proguardconfiguration не поддерживает атрибут« configuration » –

+0

Да. Мы думали об одном и том же. :-) –

+0

Ha! Я думаю, что великие мысли думают одинаково, и в то же время. Спасибо за помощь! Proguard на консоли принимает несколько команд, поэтому я бы догадался, что он будет принимать несколько в муравьиной задаче тоже, но работа concat работает нормально. –

1

Этот ответ не велик, но он работает ...

<taskdef resource="proguard/ant/task.properties" classpath="C:/Program Files/proguard4.7/lib/proguard.jar"/> 
<target name="obfuscated_jar" depends="raw_jar"> 
    <concat destfile="proguard_temp.pro"> 
     <filelist dir="." files="core.pro,lib1.pro,lib2.pro"/> 
    </concat> 
    <proguard configuration="proguard_temp.pro"> 
     <outjar path="prog_obfuscated.jar"/> 
    </proguard> 
    <delete file="proguard_temp.pro"/> 
</target> 
Смежные вопросы