web-dev-qa-db-ja.com

JPA 2.0 APIMavenアーティファクト

私はJPA2.0を使用しており、永続プロバイダーはHibernateです。ただし、javaxの標準APIを含めたいのですが、中央には2.0アーティファクトはありません。現在、Hibernate JPA 2.0アーティファクトを使用していますが、より標準的なものを使用したいと思います。

これは可能ですか?

ありがとう、

ウォルター

26
Walter White

現在、Hibernate JPA 2.0アーティファクトを使用していますが、より標準的なものを使用したいと思います

Sun/Oracleからのjavax.persistence:persistence-api:jar:2.0アーティファクトはまだありません。 Sun/Oracleから何かが必要な場合は、完全なjavax:javaee-api:jar:6.0アーティファクトを使用するか、Hibernate、EclipseLink、OpenJPAなどによって提供されるインターフェースをそのまま使用します。

17
Pascal Thivent

Ivanが説明するように、Mavenには公式のSunaclejarはありません。ただし、特定のAPIの実装者が、そのAPIのアーティファクト(APIの実装ではなく、API自体)を公開する場合がよくあります。

JPA 2.0の場合、Hibernateは org.hibernate.javax.persistence:hibernate-jpa-2.0-api を公開します。これには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のリリースがコンパイルクラスパスに配置され、それらの実装がランタイムクラスパスに配置されます。

9
Tom Anderson

現在(2017年第4四半期)にはjavax.persistence-api MavenCentralで入手できます。

<dependency>
  <groupId>javax.persistence</groupId>
  <artifactId>javax.persistence-api</artifactId>
  <version>2.2</version>
</dependency>

コードは このgithubリポジトリ で維持されます。

5
rmuller

あなたの質問に対する直接の答えは次のとおりです。いいえ、それは不可能です。長いバージョンはここにあります: Apache> Maven> Sun JARに対処するためのガイド 。長い答えの短い要約:

中央リポジトリでのSun/Oracleアーティファクトの公開には(少なくとも)2つの問題があります。

  1. 制限付きライセンス
  2. 命名規則
2
Ivan Hristov