拥有一个声明 Qute 模板和 REST 端点来呈现它的 maven 模块,我想将此模块包含在另一个 maven 项目中。问题是,看起来,目标模块没有编译,因为它没有/在它的资源/模板位置找到模板(模板包含在包含模块的 jar 中)。
有什么方法可以指示 Qute(在构建时)从其他位置读取模板或禁用此构建检查(因为模板位于正确位置的类路径中?
我现在可以使它正常工作的唯一方法是将我的模板复制到资源/模板中的目标项目,但这似乎不是正确的解决方案。
提前致谢
拥有一个声明 Qute 模板和 REST 端点来呈现它的 maven 模块,我想将此模块包含在另一个 maven 项目中。问题是,看起来,目标模块没有编译,因为它没有/在它的资源/模板位置找到模板(模板包含在包含模块的 jar 中)。
有什么方法可以指示 Qute(在构建时)从其他位置读取模板或禁用此构建检查(因为模板位于正确位置的类路径中?
我现在可以使它正常工作的唯一方法是将我的模板复制到资源/模板中的目标项目,但这似乎不是正确的解决方案。
提前致谢
是的,默认情况下,只有位于其中的模板src/main/resources/templates
经过验证并且可以注入。
您可以通过手动解析任何模板内容,Engine.parse()
甚至可以通过添加自定义模板定位器io.quarkus.qute.EngineBuilder.addLocator()
,例如:
import io.quarkus.qute.EngineBuilder;
class MyEngineConfig {
void configureEngine(@Observes EngineBuilder builder) {
builder.addLocator(path -> Optional.of(new TemplateLocation() {
@Override
public Reader read() {
return new BufferedReader(new InputStreamReader(FlowChartResource.class.getResourceAsStream(path)));
}
@Override
public Optional<Variant> getVariant() {
return Optional.empty();
}
}));
}
}
缺点是 Quarkus 无法验证/注入此类模板。
另请参阅相关问题https://github.com/quarkusio/quarkus/issues/12084和https://github.com/quarkusio/quarkus/issues/10376。
好的,我找到了另一个解决方案,使用“低级”引擎实例并“手动”解析模板:
engine.parse(new BufferedReader(new InputStreamReader(FlowChartResource.class.getResourceAsStream([PATH to My Template]))).lines().collect(Collectors.joining("\n")))