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.
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>
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}"