如何将类路径变量回显到文件

2022-09-02 02:58:27

我正在尝试获取主类路径上的所有内容,以便由我的 Ant 构建脚本写入文件:

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

当我将鼠标悬停在上面时,Ant/Eclipse 会启动一个工具提示,显示该类路径上的项目:main.class.path

C:\Users\myUser\workbench\eclipse\workspace\myProj\lib\main\ant-junit-1.6.5.jar

等等(实际列表上有大约30个JAR。

我希望将此列表写入一个名为deps的文件.txt在我的dist/目录下。

我陷入困境,因为我不知道如何制作Ant变量,或者如何在任务中至少访问它:main.class.path<echo>

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

我是否远离这里的基地,甚至离得很近?!?

对于那些在那里,而不是回答这个问题,只是评论你为什么要这样做?,我的答案很简单:我只想在我的JAR中有一个小的文本文件,作为视觉提醒(对于我未来的我)它的依赖关系是什么。


答案 1

试试这个:

  <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>

答案 2

直接通过 :

<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 属性,它保存路径中的所有项目,其嵌套的文件集(一般为资源集合)以 ';' 分隔
请参阅 Ant 手动属性和属性助手
如果您想要另一个分隔符,则需要使用具有 的 pathconvert,即在 deps 中的每个文件后使用新行.txtpathsep attributepathsep="${line.separator}"


推荐