Question tâche ant pour supprimer les fichiers d'un pot


Comment écrire une tâche ant qui supprime les fichiers d'un fichier JAR précédemment compilé?

Disons que les fichiers de mon JAR sont:

aaa/bbb/ccc/Class1
aaa/bbb/ccc/Class2
aaa/bbb/def/Class3
aaa/bbb/def/Class4

... et je veux une version de ce fichier JAR sans le aaa.bbb.def package, et je dois le supprimer en utilisant ant, de sorte que je me retrouve avec un JAR qui contient:

aaa/bbb/ccc/Class1
aaa/bbb/ccc/Class2

Merci!


29
2018-03-26 05:02


origine


Réponses:


Avez-vous essayé d'utiliser le zipfileset tâche?

<jar destfile="stripped.jar">
    <zipfileset src="full.jar" excludes="files/to/exclude/**/*.file"/>
</jar>

Par exemple:

<property name="library.dir" value="dist"/>
<property name="library.file" value="YourJavaArchive.jar"/>
<property name="library.path" value="${library.dir}/${library.file}" />
<property name="library.path.new" value="${library.dir}/new-${library.file}"/>

<target name="purge-superfluous">
    <echo>Removing superfluous files from Java archive.</echo>

    <jar destfile="${library.path.new}">
        <zipfileset src="${library.path}" excludes="**/ComicSans.ttf"/>
    </jar>

    <delete file="${library.path}" />
    <move file="${library.path.new}" tofile="${library.path}" />
</target>

56
2018-03-26 05:15



Vous devez unjar et rejar.

<unzip src="myjar.jar" dest="/classes/">
<jar destfile="newjar.jar"
    basedir="/classes/"
    includes="**/*"
    excludes="**/def/*"
/>    

5
2018-03-26 05:13



Si un programme d'archivage compatible jar-file, comme par exemple "zip" sous Linux, est disponible, la tâche peut être effectuée par

<exec executable = "zip">
<arg value = "- d" />
<arg value = "myJarCopyToStrip.jar" />
<arg value = "aaa / bbb / def / *>
<arg value = "aaa / bbb / def>
</ exec>

La suppression de sous-arborescence dépend des capacités de l'archiveur utilisé.
L'attribut "os" de la tâche Ant "exec" permet d'utiliser différents archiveurs sur différents systèmes d'exploitation.


1
2018-03-11 23:55



Je suis venu ici pour chercher à utiliser ant comme solution de contournement de quelques petits défauts de décompression.

Au hasard, quelqu'un d'autre est dans le même bateau.

Voici un exemple:

    task antUnzip() << {

            ant.jar(destfile : "stripped.jar") {
                zipfileset (src : "full.jar", excludes : "files/to/exclude/**/*.file") {
                }
            }
}

1
2018-04-25 15:03



Je ne suis pas sûr s'il existe une solution directe à votre besoin. Je recommanderais d'exploser le pot dans un répertoire temporaire, puis de supprimer les fichiers de classe indésirables. Enfin, créez un nouveau fichier jar avec les fichiers de classe requis.

Liens de référence:

http://ant.apache.org/manual/Tasks/unzip.html

http://ant.apache.org/manual/Tasks/delete.html

http://ant.apache.org/manual/Tasks/jar.html


0
2018-03-26 05:11