【问题标题】:Maven dependency for javax.persistence.*: hibernate-jpa-2.1-api or javaee-api? [duplicate]javax.persistence.* 的 Maven 依赖项:hibernate-jpa-2.1-api 还是 javaee-api? [复制]
【发布时间】:2017-12-18 10:12:11
【问题描述】:

这个故事是关于 maven 项目依赖的。我有:

  • 我的项目依赖于 hibernate-core:5.2.10.Final 工件,它依赖于 hibernate-jpa-2.1-api:1.0.0.Final
  • 而我的项目依赖于javaee-api:7.0
  • hibernate-jpa-2.1-api:1.0.0.Final 包含 javax.persistence.* 类
  • 相同的 javax.persistence.* 类包含在 javaee-api:7.0

我应该在我的项目中使用哪个依赖项以及范围?如果我将两个依赖项都保留在最终构建中,那么我将遇到类冲突。 希望应用程序可以部署到任何 JavaEE 容器,例如 Glassfish、Wildfly、JBOSS 等。

请注意,hibernate-jpa-2.1-api 不是任何 JavaEE 服务器的特定 api,也不是实现。它只是 hibernate-core 工件的 API 编译范围依赖。而且我没有手动包含此依赖项,如果我选择 Hibernate 作为 JPA 实现,那么 hibernate-jpa-2.1-api 将默认包含在构建中。

【问题讨论】:

    标签: java hibernate maven jakarta-ee


    【解决方案1】:

    看来我想通了。

    我了解到的大多数来源(例如 http://www.adam-bien.com/roller/abien/entry/the_only_one_dependency_you)都声明 javaee-api 依赖项只能在提供的范围内使用。这是因为服务器实现了这些 API,并且实现可能会有所不同。而且你永远不应该把 javaee-api.jar 放在战争或耳朵里。

    此外,wildfly 服务器包含在标准模块集中:hibernate-jpa-2.1-api-1.0.0.Final.jar。这意味着在这个部分 javaee 容器中,javax.persistence.* 类是由这个库提供的,而不是 javaee-api.jar

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2013-10-27
      • 2012-01-04
      • 2014-02-26
      • 2013-09-11
      • 2011-12-10
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多