ejecutar - ¿Cómo copio archivos en un JAR existente con Ant?
instalar ant (3)
Tengo un proyecto que necesita acceder a recursos dentro de su propio archivo JAR. Cuando creo el archivo JAR para el proyecto, me gustaría copiar un directorio en ese archivo JAR (supongo que el equivalente en ZIP sería "agregar" el directorio al archivo ZIP existente). Solo quiero que la copia se realice después de que se haya creado el JAR (y obviamente no quiero que la copia se realice si limpio y elimino el archivo JAR).
Actualmente el archivo de compilación se ve así:
<?xml version="1.0" encoding="UTF-8"?>
<project name="foobar" basedir=".." default="jar">
<!-- project-specific properties -->
<property name="project.path" value="my/project/dir/foobar" />
<patternset id="project.include">
<include name="${project.path}/**" />
</patternset>
<patternset id="project.jar.include">
<include name="${project.path}/**" />
</patternset>
<import file="common-tasks.xml" />
<property name="jar.file" location="${test.dir}/foobar.jar" />
<property name="manifest.file" location="misc/foobar.manifest" />
</project>
Algunas de las tareas de compilación se llaman desde otro archivo (common-tasks.xml), que no puedo mostrar aquí.
<jar update="true">
...
</jar>
Las tareas Jar / Ear Ant son subtareas de la tarea Zip más general. Esto significa que también puede usar el zipfileset
en su tarea Jar:
<jar destfile="${jar.file}" basedir="...">
<zipfileset dir="${project.path}" includes="*.jar" prefix="libs"/>
</jar>
También he visto que defines un archivo de manifiesto por separado para incluirlo en el Jar. También puede usar un comando de manifest
anidado:
<jar destfile="@{destfile}" basedir="@{basedir}">
<manifest>
<attribute name="Built-By" value="..."/>
<attribute name="Built-Date" value="..."/>
<attribute name="Implementation-Title" value="..."/>
<attribute name="Implementation-Version" value="..."/>
<attribute name="Implementation-Vendor" value="..."/>
</manifest>
</jar>
Una forma es usar las tareas Ant:
- Descomprimir - para explotar el Jar es una carpeta temporal
- Copiar : para copiar la carpeta que desea a la carpeta temporal, y
- Jar : con ''update'' configurado en true, para empaquetar la carpeta temp nuevamente en el archivo jar original.
El Manual Ant tiene ejemplos de cómo hacerlo.