我创建了一个测试框架,用于使用嵌入式码头测试 .jsp 文件和 .tag 文件。我正在使用 Java API 以编程方式启动 Jetty 服务器,添加 servlet 持有者和包装器测试 JSP 并初始化传递项目的 web 根的服务器。从 maven surefire 插件运行时,Jasper 在运行时发现 TLD 位置存在一些问题。我通过提供修复它
<useManifestOnlyJar>false</useManifestOnlyJar>
插件类路径设置。当我现在使用 mvn clean install 运行测试时,一切正常。从 Eclipse 上下文菜单运行测试有一个问题。如果在多模块 maven 构建中的工作区中有任何其他项目,则该项目中的 TLD 不会被解析。我尝试过的一种解决方法是在 Eclipse 工作区中“关闭”该项目,它成功了。
但是,我希望它可以与工作区中打开并从 eclipse JUnit 上下文菜单中运行的所有项目一起使用。问题出在 jasper TldScanner 中,它仅在当前项目的 jar 和 WEB-INF 中查找 tld 文件。
TldScanner.scanTlds()
processWebDotXml();
scanJars();
processTldsInFileSystem("/WEB-INF/");
我正在使用带有 Jetty-8.1.0-RC5 的 org.glassfish.web.jsp-impl 2.2.2-b06 版本。
有没有办法为 jasper 指定基于文件的 TLD 扫描以获取额外的类路径项?