我正在尝试获取主类路径中的所有内容,以便通过我的Ant buildscript写入文件:
<path id="main.class.path">
<fileset dir="${lib.main.dir}">
<include name="**/*.*"/>
</fileset>
</path>
当我将鼠标悬停在main.class.path
上时,Ant / Eclipse会启动一个工具提示,显示该类路径上的项目:
C:\用户\ MYUSER \工作台\蚀\工作空间\的Myproj \ lib中\主\蚂蚁的junit-1.6.5.jar
等。 (实际列表上有大约30个JAR。)
我希望将此列表写入我的dist/
目录下名为deps.txt的文件。
我陷入困境,因为我无法弄清楚如何使main.class.path
成为Ant变量,或者至少如何在<echo>
任务中访问它:
<echo file="${dist.dir}/deps.txt" message="${???}"/>
我是在这里下车,还是远程关闭?!?
对于那些在那里的人来说,而不是回答这个问题,只会评论你为什么要这样做?,我的回答很简单:我只想要一个小文本文件我的JAR作为视觉提醒(对于我未来的我)的依赖性。
答案 0 :(得分:31)
试试这个:
<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>
答案 1 :(得分:14)
直截了当:
<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}或$ {toString:main.class.path}是一个csv属性,它使用嵌套文件集保存路径中的所有项目(resourcecollections一般情况下)用';'分隔
参见Ant手册Properties and PropertyHelpers
如果您需要其他分隔符,则需要使用pathsep attribute
pathsep="${line.separator}"
,即在deps.txt中的每个文件后使用新行{{1}}