我们在ANT脚本中使用xmltask ANT任务作为条件逻辑(即:if语句)。
目前这项任务是轰炸,显然是因为无法达到“http://java.sun.com/dtd/application_1_3.dtd”。我们无法在浏览器中访问此网址。 Sun是否“弃用”了这些Java DTD URL?
更新:显示http://java.sun.com/也不可用。不确定这是否是Sun / Oracle的终止,或者该站点是否已经退役。
更新2:好的,现在它正在运行。自昨天以来一直没有工作 - 我发誓!我认为@Jeremy是对的,我们需要自己主持。
答案 0 :(得分:2)
我建议您下载并自己托管。
答案 1 :(得分:0)
它没有被弃用。根据{{3}},这是一个临时问题。
无论如何,根据外部托管的DTD,无论如何都是个坏主意,应该避免使用。
由于URI被用作标识符,因此有时候更改它们并非易事。但是,每个XML解析器都应该有一个选项来自定义DTD(或模式)的加载方式,应该可以使用本地副本而不是远程副本。此外,这将减少对外部连接的需求,并加快XML的加载速度。
答案 2 :(得分:0)
能够在没有网络访问权限的情况下构建东西是件好事。以下是自托管DTD和xmltask的示例,供后人使用。
靠近构建文件顶部的某处($ {ext.dir}是本地文件路径):
<xmlcatalog id="commonDTDs">
<dtd publicId="-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" location="${ext.dir}/dtd/web-app_2_3.dtd" />
<dtd publicId="-//tuckey.org//DTD UrlRewrite 3.2//EN" location="${ext.dir}/dtd/urlrewrite3.2.dtd" />
</xmlcatalog>
稍后使用xmlcatalog refId:
引用它<xmltask source="${war.dir}/WEB-INF/web.xml" dest="${war.dir}/WEB-INF/web.xml">
<xmlcatalog refId="commonDTDs" />
<remove path="web-app/servlet[servlet-class/text()='loader.servlet.FileServlet']" />
<remove path="web-app/servlet-mapping[servlet-name/text()='FileServlet']" />
</xmltask>