【问题标题】:Combine two or more persistence.xml(s) into one, when packaging (war) many modules (Maven)打包(war)多个模块(Maven)时,将两个或多个persistence.xml(s)合二为一
【发布时间】:2011-02-27 14:48:39
【问题描述】:

我有一个 Maven 管理的项目,其中包含一些模块(带有 jar 包)。每个模块在其 META-INF 目录中都包含其“persistence.xml”文件。

另一个模块负责将这些模块打包成一个war文件。但是我还没有找到将这些“persistence.xml”文件“组合”成一个文件的方法。

有可能吗?

【问题讨论】:

    标签: maven-2 jpa maven persistence.xml


    【解决方案1】:

    如果您了解 XSLT,则可以编写一个转换来合并持久性文档。 Maven 有一个用于运行 XSLT(和验证 XML)的插件 - xml-maven-plugin

    但是你需要这样做吗?例如,阅读herehere 表明persistence.xml 将从所有jar 中获取,而不仅仅是webapp 战争。所以你应该能够将 persistence.xml 留在你的库 jars 中,webapp 将使用它。

    【讨论】:

      【解决方案2】:

      嗨 为了让服务器搜索多个persistence.xml文件并配置所有的持久化单元,你必须将这个persistence.xml文件打包到EJB JAR文件中。

      艾门

      【讨论】:

        【解决方案3】:

        另一个模块负责将这些模块打包成一个war文件。但我没有办法将这些“persistence.xml”“组合”到一个文件中

        您为什么要这样做?如果您有多个具有persistence.xml 的 JAR,它们很可能定义了不同的持久性单元(持久性单元定义了与应用程序相关或分组的所有类的集合,并且必须在它们的映射中并置到单个数据库)。

        为什么不为正确的持久性单元获取EntityManagerFactory

        【讨论】:

        • 谢谢,因为我的应用服务器(树脂4.0.7)似乎无法在jars中加载persistence.xml,所以我想将这些persistence.xml(s)合并为一个。嗯,也许是树脂的设置,我会进一步研究。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多