我正在尝试开发一个 Ant 宏定义,它获取作为参数传递的 list 文件中的 Require-Bundle
属性的用逗号分隔的值。我想要获得的是这样的:
Require-Bundle=org.eclipse.ui,org.eclipse.ui.ide,org.eclipse.ui.views
...
我在代码中面临的问题是,它没有考虑属性是否在多行中有多个值,这是我的代码:
<macrodef name="getDependencies">
<attribute name="file" />
<attribute name="prefix" default="ant-mf." />
<sequential>
<loadproperties>
<file file="@{file}" />
<filterchain>
<linecontains>
<contains value="Require-Bundle" />
</linecontains>
<prefixlines prefix="@{prefix}" />
</filterchain>
</loadproperties>
</sequential>
</macrodef>
但这就是我得到的:
[echoproperties] ant-mf.Require-Bundle=org.eclipse.ui,
任何帮助将不胜感激。
最佳答案
您的 list 文件很可能如下所示:
Require-Bundle: org.eclipse.ui,
org.eclipse.ui.ide,
org.eclipse.ui.views,
...
不幸的是,Java list 文件并不完全是 Java 属性文件。 list 文件可以具有跨多行的属性,而属性文件不能具有多行值。 <loadproperties>
任务无法处理多行属性。
相反,您需要一个了解 Manifest 文件的 Ant 任务。在另一个问题中,Richard Steele provides Ant script从 Jar 文件加载 Manifest 文件。您可以调整该示例以仅获取 Require-Bundle
属性。
关于ant - 使用 ant 获取 list 文件的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23932960/