我有一个 Maven 项目,打包为jar
.
我还有一个 Maven 项目,打包为war
。这个 war 项目有一个 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
然后就出现了一个需求,把war项目中的那些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
) and src/main/taglib
(我想导出的那些WEB-INF
)。这个罐子是按照我的意愿创建的:
myjar
com
my
classes
WEB-INF
META-INF
my-facelets.taglib.tld
WEB-INF
...
然后我将这个新 jar 添加到我的第一个 war 项目中,作为 Maven 依赖项。
问题在于 jar 的 META-INF、WEB-INF 内的那些 .tld、.xhtml、.xml 文件(jar 位于 war 的WEB-INF/lib
) 不被识别。显然,除非执行其他配置,否则它们应该直接进入战争结构。这是必须具备的要求,因为多个 war 项目将使用 jar 项目的功能(类和标记库)。
现在的做法是将TLD文件放入标签库JAR中,让类加载器找到它们。下载 Apache JSTL JAR 并了解它们是如何实现的。我建议遵循该约定。它还会简化您的应用程序,因为您不必在 web.xml 文件中声明 TLD:只需将 JAR 放入 CLASSPATH 中并确保 .jsp 中的 URI 与 TLD 中的 URI 匹配即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)