Java 创建可再发行的打包标记文件
背景: 我有几个项目应该共享一个打包的标记文件(参见小节)。在一个独立的项目中,我创建了这个打包的标记文件,它实际上只是一个JAR文件(请参阅下面的“JAR文件结构”一节),我可以将它重新分发到我的所有项目中。我正在使用EclipseIDE 问题: 根据Oracle文档,我应该能够将我的.tld放入JAR文件的/META-INF/目录。但是,只有当.tld也在项目的/WEB-INF/目录中并且我使用Java 创建可再发行的打包标记文件,java,eclipse,jsp,Java,Eclipse,Jsp,背景: 我有几个项目应该共享一个打包的标记文件(参见小节)。在一个独立的项目中,我创建了这个打包的标记文件,它实际上只是一个JAR文件(请参阅下面的“JAR文件结构”一节),我可以将它重新分发到我的所有项目中。我正在使用EclipseIDE 问题: 根据Oracle文档,我应该能够将我的.tld放入JAR文件的/META-INF/目录。但是,只有当.tld也在项目的/WEB-INF/目录中并且我使用引用它时,Eclipse才会成功验证我的代码。如何在Eclipse中引用标记而不将.tld放入/W
引用它时,Eclipse才会成功验证我的代码。如何在Eclipse中引用标记而不将.tld放入/WEB-INF/目录?以下是Oracle文档,说明它可以位于JAR的META-INF中:
标记库描述符文件名的扩展名必须为.tld和
必须打包在WAR的/WEB-INF/目录或子目录中
文件或位于标记库的/META-INF/目录或子目录中
装在罐子里。如果标记实现为标记文件,并且
打包在/WEB-INF/tags/或子目录中,将生成TLD
由web容器自动执行,但如果需要,可以提供一个
希望如此
我不想将.tld放入WEB-INF的原因是,如果它包含在JAR中,则更容易分发。这样,我就不必每次进行更改时都将其重新复制到所有相关项目中
我的JAR文件结构:
我创建了一个名为的JSP标记文件。我创建了另一个名为tagfiles.tld的文件,其中包含一个
tag files
元素,该元素有一个子元素/META-INF/tags/wrapper.tag
。我创建了一个ant任务来处理这些问题。它创建一个包含以下内容的JAR:META-INF、META-INF/tags、META-INF/tld、META-INF/MANIFEST.MF、tags/wrapper.tag和tld/tagfiles.tld 成功了。我升级到了EclipseLuna(在撰写本文时,是最新版本)。我的主项目在包含标记文件JAR的项目的Java构建路径上有一个“Projects”引用。JAR本身具有我在上面的文章中指出的文件结构。My.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>
2
2
我的名字
http://anyuri.com/anything
你的描述在这里
这只是一个测试
包装纸
包装纸
/META-INF/tags/wrapper.tag
我还应该注意,我有一个ANT构建,它将标记文件JAR打包到web应用程序的web-INF/lib目录中。根据以下要求,这是必需的:
标记文件可以打包在JAR的/META-INF/tags/目录中
安装在WEB应用程序的/WEB-INF/lib/目录中的文件。
此处放置的标记通常是可重用标记库的一部分,这些标记
可在任何web应用程序中轻松使用