2012-07-09 4 views
3

Je voudrais savoir comment exécuter JarJar avec Ant, en transmettant les règles avec un fichier de règles externe.JarJar avec Ant - comment utiliser un fichier de règles


1) Je sais que je peux passer les règles un par un comme ci-dessous:

<jarjar destfile="B.jar" > 
     <zipfileset src="A.jar" /> 

     <rule pattern="com.a.**" result="[email protected]" /> 
    </jarjar> 

2) Je sais que je peux passer les règles dans un fichier si je le lance à partir de la ligne de commande :

java -jar jarjar.jar process <rulesFile> <inJar> <outJar> 

3) Je peux utiliser la ligne de commande ci-dessus dans une tâche <exec> Ant. (meilleure solution de contournement)

4) J'ai trouvé une référence à l'utilisation d'une balise <rulesFile> dans Maven.


Les options ci-dessus ne sont pas idéales pour ce que je voudrais faire. Je souhaite exécuter JarJar à partir d'une tâche Ant, en transmettant un fichier de règles.

Répondre

2

Je suis incapable d'obtenir des informations à ce sujet, de tout forum ou en postant les développeurs de JarJar, donc j'ai décidé de répondre à cette question avec une solution que j'utilise:

A titre d'exemple, le fichier ci-dessous build.xml comprend le contenu d'une autre ligne de fichier test.txt. J'importer le fichier texte en utilisant la balise include_this (ce qui est mon nom - vous pouvez utiliser le nom ici):

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE project [ 
    <!ENTITY include_this SYSTEM "test.txt"> 
]> 

<project name="Test" default="build" > 

    <target name="build" > 
     &include_this; 
    </target> 

</project> 

Dans cet exemple simple, le contenu du fichier test.txt est:

<echo>This is a test.</echo> 

J'ai donc utilisé cette solution de contournement pour remplacer les règles de l'appel jarjar. Mettre les règles dans le fichier test.txt:

<rule pattern="com.**" result="${project.output}[email protected]" /> 
<rule pattern="org.**" result="${project.output}[email protected]" /> 

Mon jarjar appel devient alors:

<!-- jarjar uses the same syntax as the jar task --> 
<jarjar destfile="${jarjar.output.dir}/${project.output}.jar" > 
    <!-- source files --> 
    <zipfileset src="${jar.output.dir}/${project.output}.jar" /> 

    <!-- refactoring rules --> 
    &include_this; 
</jarjar> 
Questions connexes