【问题标题】:Is it ok to package my webapp as JAR and put web resources under META-INF/resources?可以将我的 webapp 打包为 JAR 并将 web 资源放在 META-INF/resources 下吗?
【发布时间】:2014-06-23 10:00:28
【问题描述】:

我有几个 JSF 项目(由 maven 构建),它们依赖于具有公共网络资源的项目。

我有两种可能:

a) 所有项目都有打包类型 war 并且 maven-war-plugin 会将所有内容合并为一个战争(覆盖)。

b) 我的具有公共网络资源的项目被打包为 war 并且所有其他项目都成为 jar 工件。这些项目的所有网络资源都在 src/main/resources/META-INF/resources (servlet 3 API) 下,并且不再有 src/main/webapp 文件夹。

这种方法有缺点吗?

我认为,b) 显示了出色的模块化,但“新”目录结构可能会使开发人员感到困惑。

【问题讨论】:

    标签: jsf-2.2 servlet-3.0


    【解决方案1】:

    使用 a) 您将无法将通用 Web 项目作为 JAR 导出和分发(就像 PrimeFaces、OmniFaces、RichFaces 等一样)。有了 b) 你会的。

    这确实只是基于 servlet 的 Web 片段项目的推荐结构(另请参阅 Servlet 3.0 specification 的第 8.2 章)。它确实可能会使受过良好教育的开发人员感到困惑,但这是一个非技术问题,它只是一个教育问题。在向项目介绍新开发人员时只需考虑这一点(例如,在采访中介绍它和/或在内部项目手册中记录它)。

    另见:

    【讨论】:

    • 是的,这是真的。我想知道在 servlet 3 规范存在之前我们是如何解决这个打包问题的。 Maven Assembly 插件可以在这里作为选项 c) 帮助我吗?
    • 是一样的。在 Servlet 3 之前,只能从 JAR 中自动注册工件。一切都必须手动结束在 WAR 的 web.xml 中。从 Servlet 3 开始,可以在 JAR 中使用 web-fragment.xml 和新的 @WebListener@WebServlet@WebFilter 等注释。这基本上是唯一的区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多