JPA 2.0 API maven артефакт

Я использую JPA 2.0, а мой постоянный провайдер - Hibernate; однако я хотел бы просто включить стандартный API из javax, но в центре нет артефакта 2.0. В настоящее время я использую артефакт Hibernate JPA 2.0, но я бы хотел использовать что-то более стандартное.

Возможно ли это?

Спасибо,

Вальтер

Ответ 1

В настоящее время я использую артефакт Hibernate JPA 2.0, но я бы хотел использовать что-то более стандартное

По-прежнему нет артефакта javax.persistence:persistence-api:jar:2.0 от Sun/Oracle. Либо используйте полный артефакт javax:javaee-api:jar:6.0, если вы хотите что-то от Sun/Oracle... или просто придерживайтесь интерфейсов, предоставляемых Hibernate, EclipseLink, OpenJPA и т.д.

Ответ 2

Как объясняет Иван, в Maven нет официальных банок Sunacle. Однако довольно часто случается, что разработчик данного API будет публиковать артефакт для этого API (сам API, а не их реализацию).

В случае JPA 2.0, Hibernate публикует org.hibernate.javax.persistence: hibernate-jpa-2.0-api, который содержит только классы javax.persistence и не относящиеся к гибернату вещи.

My 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 на путь компиляции class и их реализацию в пути к среде выполнения.

Ответ 3

Прямой ответ на ваши вопросы: Нет, это невозможно. Более длинная версия приведена здесь: Apache > Maven > Руководство по работе с Sun JAR. Краткое резюме более длинного ответа:

Есть (по крайней мере) две проблемы с публикацией артефактов Sun/Oracle в центральном репозитории:

  • Ограничительная лицензия
  • Соглашение об именах

Ответ 4

В настоящее время (Q4 2017) есть javax.persistence-api, доступный в центральном центре maven.

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

Код поддерживается в это github repo.