Maven 2 JPA2.0 API maven工件

Maven 2 JPA2.0 API maven工件,maven-2,jpa-2.0,Maven 2,Jpa 2.0,我正在使用JPA2.0,我的持久性提供者是Hibernate;然而,我只想包含一个来自javax的标准API,但在central中,没有2.0工件。我目前正在使用HibernateJPA2.0工件,但我想使用更标准的东西 这可能吗 谢谢 沃尔特 我目前正在使用HibernateJPA2.0工件,但我想使用更标准的东西 仍然没有来自Sun/Oracle的javax.persistence:persistenceAPI:jar:2.0artifact。如果您想从Sun/Oracle获得一些东西,可以

我正在使用JPA2.0,我的持久性提供者是Hibernate;然而,我只想包含一个来自javax的标准API,但在central中,没有2.0工件。我目前正在使用HibernateJPA2.0工件,但我想使用更标准的东西

这可能吗

谢谢

沃尔特

我目前正在使用HibernateJPA2.0工件,但我想使用更标准的东西


仍然没有来自Sun/Oracle的
javax.persistence:persistenceAPI:jar:2.0
artifact。如果您想从Sun/Oracle获得一些东西,可以使用完整的
javax:javaeeAPI:jar:6.0
工件。。。或者只使用Hibernate、EclipseLink、OpenJPA等提供的接口。

对您的问题的直接回答是:不,这是不可能的。此处给出了较长的版本:。较长答案的简短摘要:

在中央存储库中发布Sun/Oracle工件存在(至少)两个问题:

  • 限制性许可
  • 命名约定

  • 正如Ivan解释的,Maven没有官方的Sunacle罐子。然而,通常情况下,给定API的实现者会发布该API的工件(API本身,而不是其实现)

    在JPA2.0的例子中,HibernatePublish只包含
    javax.persistence
    类,没有Hibernate特有的东西

    因此,我的build.gradle说:

    dependencies {
        compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.0-api', version: '1.0.1.Final'
        runtime group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.1.4.Final'
    }
    
    它将Hibernate发布的API放在编译类路径上,并将其实现放在运行时类路径上。

    目前(2020年第1季度),默认工件是

    <dependency>
      <groupId>jakarta.persistence</groupId>
      <artifactId>jakarta.persistence-api</artifactId>
      <version>2.2.3</version>
    </dependency>
    

    代码保存在中。

    截至2010年11月,情况仍然如此吗?有一个输入错误:您有“javaeeapi”(注意3e),应该是‘javaee-api’。2012年1月的情况似乎仍然如此……给出了什么?请参阅下面我的答案,其中详细介绍了包含JPA 2.0 api接口的官方Oracle jar。每个主要提供商似乎都有自己的
    javax.persistence
    类。这很愚蠢,因为你认为到2016年会有一个这样的类是JPA2.0、2.1等的标准版本。。。
    <dependency>
      <groupId>javax.persistence</groupId>
      <artifactId>javax.persistence-api</artifactId>
      <version>2.2</version>
    </dependency>