有了一个声明Qute模板和呈现它的REST端点的maven模块,我想把这个模块包含在另一个maven项目中。问题似乎是,目标模块没有编译,因为它在资源/模板位置没有/找到模板(模板包含在所包含模块的jar中)。
有没有办法指示Qute (在构建时)从其他位置读取模板或禁用此构建检查(因为模板位于类路径中的正确位置?
现在我能让它正常工作的唯一方法是将我的模板复制到资源/模板的目标项目中,但这似乎不是正确的解决方案。
提前感谢
发布于 2021-03-02 16:30:07
可以,默认情况下,只有位于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。
发布于 2021-03-02 03:56:26
好吧,我找到了另一个解决方案,使用“低级”引擎实例,并解析模板“手动”:
engine.parse(new BufferedReader(new InputStreamReader(FlowChartResource.class.getResourceAsStream([PATH to My Template]))).lines().collect(Collectors.joining("\n")))https://stackoverflow.com/questions/66428533
复制相似问题