是否可以从Antlib中定义的Apache Ant宏中访问资源?从Apache Ant宏中访问Antlib资源
例如,在我的antlib.xml
中,我有一个执行一些XSLT的宏。理想情况下,我希望将XSLT文件打包在与antlib.xml
相同的JAR中,但我不知道如何指定XSLT的位置。
这里是(简化)代码:
<antlib xmlns:tibant="antlib:org.windyroad.tibant">
<macrodef name="configure-ear">
<attribute name="xml" />
<attribute name="out" />
<sequential>
<xslt in="@{xml}"
out="@{out}"
style="...what to put here...">
</xslt>
</sequential>
</macrodef>
</antlib>
的问题是,无论我放在style
属性使用的antlib相对于basedir
的项目,我无法找到任何方式指定相对于antlib.xml的路径。
任何想法?
我可以出货的XSLT作为一个单独的文件,但后来我就需要给用户提供一些方法来指定的XSLT,这是不理想的(例如设置tibant.home
属性)的位置。我也可以使用echoxml
将XSLT写入临时文件,但是这是一种黑客攻击。
谢谢。我试图让它工作,但到目前为止,它找不到xslt,除非我明确指定类路径。我会让你知道我怎么走。 – 2011-03-06 19:56:38
@Tom哦,班加载的乐趣!它看起来像'javaresource'在antlib中默认使用核心ant类加载器,而不是antlib本身的类加载器,这正是我认为是正确的事情。它甚至可能值得作为错误报告。 – matt 2011-03-07 16:20:48
@Tom一些潜在的解决方法:将jar放在ant lib目录之一中,或者对ant使用'-lib'选项并依靠ant自动从antlib uri命名空间声明中找到antlib(这正是我所做的这就是为什么它似乎为我工作)。然后everthing使用核心类加载器。或者在'taskdef'和'javaresource'中使用'loaderRef'属性。您必须确保两者都使用相同的字符串,但您不必在antlib的'javaresource'中指定类路径。 – matt 2011-03-07 16:26:57