2011-11-15 7 views
3

J'ai en fait deux questions connexes:proguard comme tâche ant

  1. constantes prédéfinies peut être étendue dans les déclarations de tâche <injar file="${build}/myjar.jar" />?
  2. Comment puis-je réutiliser la définition de classpath dans proguard? Ce que j'essaye de réaliser n'est pas de spécifier l'ensemble des bibliothèques requises. Ils sont assez nombreux et sont déjà inclus dans le classpath de l'ant avec un identifiant spécifique.

Merci beaucoup.

Martin

Répondre

5

Bien sûr, vous pouvez utiliser des variables Ant. Cependant, de mon point de vue, il est plus facile d'écrire toutes les options de ligne de commande dans le corps de la tâche proguard:

<taskdef resource="proguard/ant/task.properties" classpath="lib/proguard.jar" /> 
<proguard> 
    -libraryjars "${java.home}/lib/rt.jar" 
    -injars  "${jar.name}" 
    -outjars build/temp.jar 
    -keep class test.Main { public static void main(java.lang.String[]); } 
    -dontwarn 
    -dontoptimize 
    -dontobfuscate 
</proguard> 

Pour convertir un chemin de classe définie à une chaîne qui peut être inclus dans la définition de proguard vous pouvez utilisez la tâche Ant PathConvert. Le premier exemple sur la page liée devrait être ce dont vous avez besoin.

Mise à jour: Comment obtenir les guillemets autour des entrées de chemin a été répondu ici: How to properly quote a path in an ant task?

+0

Merci pour la réponse. Votre aide est appréciée. –

+0

PathConvert n'ajoute pas de guillemets autour des noms de fichiers avec des espaces, comme prévu par ProGuard (au moins jusqu'à la version 4.6), de sorte que les éléments XML normaux pourraient être plus sûrs pour les spécifications de chemin. Les autres options sont en effet plus compactes et plus lisibles dans le style ProGuard intégré. –

+0

J'ai ajouté un lien dans ma réponse à une question décrivant la solution sur le problème de cotation. – Robert

1

Pour répondre à votre première question, oui. L'expansion de variables de ce type dans un fichier de construction est une fonctionnalité de Ant. Cela fonctionnera avec toutes les tâches que vous utilisez.