首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自另一个maven模块的Quarkus Qute模板位置

问来自另一个maven模块的Quarkus Qute模板位置
EN

Stack Overflow用户
提问于 2021-03-02 03:36:46
回答 2查看 166关注 0票数 2

有了一个声明Qute模板和呈现它的REST端点的maven模块,我想把这个模块包含在另一个maven项目中。问题似乎是,目标模块没有编译,因为它在资源/模板位置没有/找到模板(模板包含在所包含模块的jar中)。

有没有办法指示Qute (在构建时)从其他位置读取模板或禁用此构建检查(因为模板位于类路径中的正确位置?

现在我能让它正常工作的唯一方法是将我的模板复制到资源/模板的目标项目中,但这似乎不是正确的解决方案。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2021-03-02 16:30:07

可以,默认情况下,只有位于src/main/resources/templates中的模板才会被验证和注入。

您可以通过Engine.parse()手动解析任何模板内容,甚至可以通过io.quarkus.qute.EngineBuilder.addLocator()添加自定义模板定位器,例如:

代码语言:javascript
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2021-03-02 03:56:26

好吧,我找到了另一个解决方案,使用“低级”引擎实例,并解析模板“手动”:

代码语言:javascript
复制
engine.parse(new BufferedReader(new InputStreamReader(FlowChartResource.class.getResourceAsStream([PATH to My Template]))).lines().collect(Collectors.joining("\n")))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66428533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档