如何将TLD和标签库文件添加到Maven的jar项目中

我有一个打包成jar的Maven项目。

我还有一个打包成war的Maven项目。 这个战争项目有一个tld文件和一些xhtml文件(标签库)。 战争项目的结构是(基本上):

pom.xml
src
    main
       java
           ...
       webapp
           WEB-INF
               my-facelets.taglib.xml
               facelets
                   aTag.xhtml
                   anotherTag.xhtml
           META-INF
               my-facelets.taglib.tld

然后出现了从战争项目中移除这些xml,xhtml和tld文件并将它们打包到jar项目中的要求。 所以我的第一次尝试是在jar项目的POM中添加:

<resources>
  <resource>
    <directory>src/main/tld</directory>
    <targetPath>META-INF</targetPath>
  </resource>

  <resource>
    <directory>src/main/taglib</directory>
    <targetPath>WEB-INF</targetPath>
  </resource>
</resources> 

当然,将这些文件放到src/main/tld (我想要导出到META-INF )和src/main/taglib (我想要导出到WEB-INF )中。 这个罐子是我想要的:

myjar
    com
        my
            classes
    WEB-INF

    META-INF
        my-facelets.taglib.tld
    WEB-INF
        ...

然后我将这个新的jar添加到我的第一个战争项目中,作为maven依赖项。

问题在于,那些位于jar的META-INF,WEB-INF(该jar位于war的WEB-INF/lib )的.tld,.xhtml,.xml文件无法识别。 显然他们应该直接进入战争结构,除非进行其他配置。 这是必须具备的要求,因为多个战争项目将使用jar项目的功能(类和标签库)。


现在的做法是将TLD文件放入标记库JAR中,并让类加载器找到它们。 下载Apache JSTL JAR并查看它们是如何实现的。 我建议遵循该惯例。 它也将简化您的应用程序,因为您不必在web.xml文件中声明TLD:只需将JAR放入CLASSPATH中,并确保.jsp中的URI与TLD中的URI匹配。


@duffymo - 你的解决方案完全有效。 将图形添加到您的描述中。

创建一个生成JAR的Maven项目。 保持下面的结构

 src -- main
            |-- java
            |      `-- net
            |            `-- madhur
            |                 `-- helloTag.java
            `-- resources
                  `-- META-INF
                        `-- tags
                             `-- customTags.tld

给你的customTags.tld文件添加uri这样的东西

<uri>http://www.xyzabc.com/taglibs/customTags</uri>

在你的WAR文件中访问标签

战争应该有以下结构

  META-INF/
  META-INF/MANIFEST.MF
  WEB-INF/
  WEB-INF/classes/
  WEB-INF/lib/
  WEB-INF/lib/{tagLibrary}.jar
  WEB-INF/web.xml
  WEB-INF/customTags.tld

web.xml中

    <jsp-config>
        <taglib>
            <taglib-uri>www.xyzabc.com/taglibs/customTags</taglib-uri>
            <taglib-location>/WEB-INF/customTags.tld</taglib-location>
        </taglib>
    </jsp-config>

在FTL或JSP文件中使用标签

FTL:

<#assign ct = JspTaglibs["www.xyzabc.com/taglibs/customTags"]>
链接地址: http://www.djcxy.com/p/12957.html

上一篇: How to add TLD and Tag Lib files into a Maven's jar project

下一篇: Can you have JSF custom components in different OSGi bundles?