Comment faire écho variable de chemin de classe à un fichier

J'essaie d'obtenir tout le contenu de mon classpath principal pour être écrit dans un fichier par mon buildscript Ant:

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

Lorsque je survole main.class.path, Ant / Eclipse lance une info-bulle qui affiche les éléments de ce classpath:

C:UsersmyUserworkbencheclipseworkspacemyProjlibmainant-junit-1.6.5.jar

Etc. (La liste réelle a environ 30 pots dessus.)

Je veux que cette liste soit écrite dans un fichier appelé deps.txt sous mon dist/ répertoire.

Je suis bloqué parce que je ne peux pas comprendre comment faire main.class.path une variable Ant, ou comment au moins y accéder dans la tâche <echo>:

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

Suis-je loin de la base ici, ou même à distance?!?

Et pour ceux d'entre vous qui, au lieu de répondre à cette question, tout commentaire Pourquoi voudriez-vous faire cela?, ma réponse est simple: je veux juste un petit fichier texte dans mon pot qui sert de rappel visuel (pour mon futur moi) pour ce que c'est les dépendances sont.

21
demandé sur zb226 2012-03-15 20:48:24

2 réponses

Essayez ceci:

  <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>
31
répondu hmjd 2012-03-15 17:00:46

Simple via :

<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:principal.classe.chemin} ou ${toString: main.classe.path} est une propriété csv qui contient tous les éléments de votre path avec ses ensembles de fichiers imbriqués ( resourcecollections en général) séparés par'; '
voir manuel Ant propriétés et PropertyHelpers
Si vous voulez un autre séparateur, vous devez utiliser pathconvert qui a un pathsep attribute, c'est-à-dire pour une nouvelle ligne après chaque fichier dans vos deps.txt utiliser pathsep="${line.separator}"

14
répondu Rebse 2012-03-16 15:08:26