2012-03-15 19 views
21

Estoy tratando de obtener todos los contenidos en mi ruta de clase principal para que se escriba en un archivo por mi buildscript Ant:Cómo echo variable de ruta de clase en un archivo

<path id="main.class.path"> 
    <fileset dir="${lib.main.dir}"> 
     <include name="**/*.*"/> 
    </fileset> 
</path> 

Cuando se ciernen sobre main.class.path, Ant/Eclipse lanza una información sobre herramientas que muestra los elementos de esa ruta de clases:

C: \ Users \ myUser \ banco de trabajo \ eclipse \ espacio de trabajo \ MyProj \ lib \ Main \ ant-junit-1.6.5.jar

etc. (La lista actual tiene aproximadamente 30 JAR).

Quiero esta lista escrita en un archivo llamado deps.txt en mi directorio dist/.

estoy atascado porque no puedo encontrar la manera de hacer main.class.path una variable de hormiga, o cómo mínimo acceso en el <echo> tarea:

<echo file="${dist.dir}/deps.txt" message="${???}"/> 

I Am base de manera-off aquí , o incluso remotamente cerca?!?

Y para aquellos de ustedes que, en lugar de responder esta pregunta, simplemente comentarían ¿Por qué querrían hacer esto?, mi respuesta es simple: solo quiero un pequeño archivo de texto en mi JAR que sirva como un recordatorio visual (para mi futuro yo) de cuáles son sus dependencias.

Respuesta

30

Prueba esto:

<pathconvert property="expanded.main.class.path" refid="main.class.path"/> 

    <target name="everything"> 
    <echo message="${expanded.main.class.path}" 
      file="${dist.dir}/deps.txt"/> 
    </target> 
13

Sencillo a través de:

<echo file="${dist.dir}/deps.txt">${ant.refid:main.class.path}</echo> 
<!-- or --> 
<echo file="${dist.dir}/deps.txt">${toString:main.class.path}</echo> 

$ {ant.refid: main.class.path} o {$ toString: main.class.path} es una propiedad csv que contiene todos los elementos de su ruta con sus conjuntos de archivos anidados (resourcecollections en general) separados por ';'
ver Hormiga Manual Properties and PropertyHelpers
Si desea otro separador es necesario utilizar pathconvert que tiene una pathsep attribute, es decir, para una nueva línea después de cada archivo en su deps.txt usar pathsep="${line.separator}"

Cuestiones relacionadas