【问题标题】:share code between projects with maven使用 maven 在项目之间共享代码
【发布时间】:2013-08-13 14:20:53
【问题描述】:

我必须创建 2 个项目。为此,我将使用 Spring、JPA、JSF 和 Maven。我的项目将是 3 层架构上的结构,因此我将拥有视图、服务和 DAO 层。持久层将由带有 JPA2.0 的 hibernate 提供。
问题是这两个项目将共享大部分代码,基本上两个项目都在同一个数据库上运行,并且将共享大部分实体、DAO 甚至服务。
在我搜索了一下之后,我发现这个任务可以通过一个多模块 maven 项目来实现。所以我创建了一个多模块 maven 项目,它由以下部分组成:
- 核心包(将包含所有公共类),
- 内部网络应用程序(将由内部用户访问)
- 外部网站(将由外部客户访问)。

我在这里遇到的问题是 persitence.xml 位置,因为如果我将该文件放入核心包中,我将无法包含来自其他项目的实体。如果我将文件放在项目中,我可以在 persitence.xml 中引用核心实体,但我想分享一些功能,即:

public abstract class GenericDaoImpl<T> implements GenericDao<T> {

    @PersistenceContext(type = PersistenceContextType.TRANSACTION,unitName="CCPU")
    protected EntityManager em;

不会再工作了,因为 Eclipse 正在“尖叫”说没有名为 CCPU 的持久性单元,因为 persistence.xml 文件不再在这个项目中。
首先,这是解决这类问题的正确方法吗?
最后但并非最不重要的一点是,我应该将持久性文件放在哪里以便能够组合来自所有 3 个子项目的实体?

【问题讨论】:

    标签: spring jpa maven-3


    【解决方案1】:

    我有同样的情况:两个具有公共域对象的 webapps,但我所有的实体都位于“域”模块中。 Webapps 就像“域”后端模块的“前端客户端”。

    如果您想在适当的项目中定位特定于 webapp 的实体,请尝试从 GenericDaoImpl 中删除“em”字段并将其作为参数传递给所有方法。

    【讨论】:

      猜你喜欢
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 2019-10-07
      • 2017-10-19
      • 2012-11-11
      • 1970-01-01
      相关资源
      最近更新 更多