创建可再发行的打包标记文件

时间:2015-02-06 23:34:36

标签: java eclipse jsp

背景

我有几个应该共享打包标记文件的项目(请参阅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。

1 个答案:

答案 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应用程序中轻松使用。