2012-05-07 58 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

您可以創建一個包含-include選項指向實際的.pro文件的單個主.pro文件。

+1

非常感謝ProGuard btw,這太棒了! –

0

看起來只有一個文件允許在configuration屬性中。
編輯
而屬性只允許在<proguard>元素。我有另一種可能的解決方案嘗試將您的配置文件連接到Ant concat-task,並將此臨時文件傳遞給<proguard configuration="">屬性。


此外,它可以修改ProGuardTask -class接受多個文件作爲參數,並隨後將它們連接起來。 Ant macrodef也可以達到相同的結果。

+0

試過了,沒有運氣。 'proguard配置不支持「配置」屬性# –

+0

是的。我們想到了同樣的事情。 :-) –

+0

哈!我想偉大的思想人士會同時思考。謝謝您的幫助!在控制檯的Proguard接受多個命令,所以我會猜想它也會在ant任務中接受多個命令,但是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>