背景
我有几个应该共享打包标记文件的项目(请参阅Packaged tag files部分)。在一个独立的项目中,我创建了这个打包的标记文件,它实际上只是一个JAR文件(请参阅下面的“JAR文件结构”一节),我可以将其重新分发到我的所有项目中。我正在使用Eclipse IDE。
问题:
根据Oracle文档,我应该能够将我的.tld放入JAR文件&META-INF /目录中。但是,如果.tld也在项目的/ WEB-INF /目录中,Eclipse只会成功验证我的代码,并且我用<%@taglib prefix="t" uri="/WEB-INF/tagfiles.tld" %>
引用它。如何在不将.tld放入/ WEB-INF /目录的情况下在Eclipse中引用我的标记?以下是Oracle文档,说明它可以在JAR的META-INF:
标记库描述符文件名必须具有扩展名.tld和 必须打包在WAR的/ WEB-INF /目录或子目录中 文件或在标签库的/ META-INF /目录或子目录中 打包在JAR中。如果标签是作为标签文件实现的,那么 打包在/ WEB-INF / tags /或子目录中,将生成TLD 自动由Web容器,但如果您可以提供一个 愿望。
我不想将.tld放入WEB-INF的原因是,如果它包含在JAR中,它更容易分发。然后,每次我做出改变时,我都不必将其重新复制到所有依赖项目中。
我的JAR文件结构:
我创建了一个名为wrapper.tag的JSP标记文件。我创建了另一个名为tagfiles.tld的文件,其中tag-files
元素具有子元素<path>/META-INF/tags/wrapper.tag</path>
。我创建了一个JAR这些的ant任务。它创建一个包含以下内容的JAR:META-INF,META-INF /标签,META-INF / tld,META-INF / MANIFEST.MF,tags / wrapper.tag和tld / tagfiles.tld。
答案 0 :(得分:0)
搞定了。我升级到Eclipse Luna(在撰写本文时,最新版本)。我的主项目在包含标记文件JAR的项目的Java构建路径上有一个“项目”引用。 JAR本身具有上面帖子中指出的文件结构。我的.tld文件包含以下内容:
<taglib version="2.0" xmlns="http://java.sun.com/xml/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<tlib-version>2.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>mysname</short-name>
<uri>http://anyuri.com/anything</uri>
<description>
Your description here
</description>
<tag-file>
<description>This is just a test</description>
<display-name>wrapper</display-name>
<name>wrapper</name>
<path>/META-INF/tags/wrapper.tag</path>
</tag-file>
</taglib>
我还应该注意,我有一个ANT构建,它将标记文件JAR打包到Web应用程序的WEB-INF / lib目录中。根据{{3}}:
,这是必需的标记文件可以打包在JAR中的/ META-INF / tags /目录中 文件安装在Web应用程序的/ WEB-INF / lib /目录中。 放在这里的标签通常是可重复使用的标签库的一部分 可以在任何Web应用程序中轻松使用。