3 votes

Java Ant - comment passer des arguments à une tâche ProGuard et les utiliser dans un fichier de configuration ?

J'ai ceci dans mon 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>

Cela fonctionne bien.

Dans le fichier de configuration (c'est-à-dire "ant/proguard.conf"), j'essaie d'accéder aux propriétés définies dans ce fichier build.xml, mais j'obtiens toujours ce type d'erreur :

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

L'erreur est claire. La question est de savoir comment faire ce que j'essaie de faire ?
Si je l'avais fait de la manière "options de configuration de ProGuard embarqué" je pourrais utiliser ces propriétés comme n'importe quelle autre propriété dans build.xml, mais j'essaie de garder les fichiers séparés.

Comment je fais ça alors ?

6voto

Eric Lafortune Points 17656

Par défaut, Ant ne fournit pas de moyen de définir les propriétés du système java pour ses tâches. Vous pouvez uniquement spécifier les options -D dans la variable système ANT_OPTS lors du démarrage de Ant lui-même.

Je vais envisager de soutenir l'utilisation des propriétés Ant dans les configurations ProGuard référencées (étant le développeur de ProGuard).

Pour l'instant, une solution acceptable pourrait être de spécifier les pots d'entrée et de sortie dans le style XML de Ant :

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

Cette partie de la configuration est de toute façon plus étroitement liée au script de Ant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X