我有一个打包在 onejar 中的应用程序,它使用 Velocity 进行模板化。
在我的 Maven 项目设置中,我有一个$base/src/main/resources/template.html
. 当应用程序被打包为 onejar 时,生成的 onejar 在其中包含一个嵌套的 jar(在 main/my-jar.jar 下)。该 jar 又将该template.html
文件打包在其根目录下。(显然 maven 将其从 src/main/resources 复制到包的根目录中)
我想将该模板加载为 Velocity 中的资源。我读过我需要使用 ClassPathResourceLoader 来做到这一点,所以我的代码如下所示:
VelocityEngine ve = new VelocityEngine();
ve.setApplicationAttribute("resource.loader", "class");
ve.setApplicationAttribute("class.resource.loader.class",
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader.class);
ve.init();
Template t = ve.getTemplate("template.html");
每次都失败,除了 Velocity 的资源加载器都找不到该文件。
我有两个问题 - 首先,这甚至是配置 ClasspathResourceLoader 使用的正确方法吗?其次,如果配置正确,我将指定什么路径以便可以在该内部嵌套 jar 中找到 template.html?