JPA из репозитория Maven с Айви - PullRequest
4 голосов
/ 10 марта 2011

Я конвертирую существующий проект, используя JPA + Hibernate, чтобы использовать Ivy для получения его зависимостей.Я могу получить почти все, но у меня проблемы с получением JPA.Это мой ivy.xml без JPA:

<ivy-module version="2.0">
    <info organisation="xxx" module="dataserver"/>
    <dependencies>
        <dependency org="commons-logging" name="commons-logging" rev="1.1.1"/>
        <dependency org="com.google.guava" name="guava" rev="r07"/>
        <dependency org="log4j" name="log4j" rev="1.2.16"/>
        <dependency org="org.hibernate" name="hibernate-entitymanager" rev="3.4.0.GA"/>
        <dependency org="c3p0" name="c3p0" rev="0.9.1.2"/>
        <dependency org="mysql" name="mysql-connector-java" rev="5.1.14"/>
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1"/>
        <dependency org="org.apache.openjpa" name="openjpa-persistence" rev="2.1.0"/>
    </dependencies>
</ivy-module>

Я ожидал легко найти JPA в репозитории Maven, но это не так.Через некоторое время я обнаружил, что OpenJPA:

<ivy-module version="2.0">
    <info organisation="xxx" module="dataserver"/>
    <dependencies>
        <dependency org="commons-logging" name="commons-logging" rev="1.1.1"/>
        <dependency org="com.google.guava" name="guava" rev="r07"/>
        <dependency org="log4j" name="log4j" rev="1.2.16"/>
        <dependency org="org.hibernate" name="hibernate-entitymanager" rev="3.4.0.GA"/>
        <dependency org="c3p0" name="c3p0" rev="0.9.1.2"/>
        <dependency org="mysql" name="mysql-connector-java" rev="5.1.14"/>
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1"/>
        <dependency org="org.apache.openjpa" name="openjpa-persistence" rev="2.1.0"/>
    </dependencies>
</ivy-module>

Несмотря на то, что загрузка идет медленно, в ней, по-видимому, содержатся интерфейсы / классы, которые я пропустил, например EntityManager.Тем не менее, это не то же самое, что версия JPA, распространяемая с Hibernate, которую я имел, потому что я сейчас пропускаю метод EntityManager.createQuery(String, Class).Но я не смог найти более новую версию OpenJPA, чем 2.1.0.

Какой надлежащий источник JPA в репозитории Maven?

Ответы [ 5 ]

1 голос
/ 13 марта 2011

Могу ли я улучшить ответ Томаса, предложив использовать сопоставление конфигурации.Это исключит банки, помеченные как «необязательные» в модулях Hibernate (например, вам не нужно загружать ANT)

В следующем примере перечислены 3 конфигурации, соответствующие 3 основным областям действия в модуле Maven.

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
  <info organisation="com.myspotontheweb" module="demo1"/>
  <configurations defaultconfmapping="compile->default">
    <conf name="compile" description="Compile dependencies"/>
    <conf name="runtume" description="Runtime dependencies" extends="compile"/>
    <conf name="test" description="Test dependencies" extends="runtime"/>        
  </configurations>
  <dependencies>
    <dependency org="org.hibernate" name="ejb3-persistence" rev="1.0.2.GA"/>
    <dependency org="org.hibernate" name="hibernate-annotations" rev="3.4.0.GA"/>
    <dependency org="org.hibernate" name="hibernate-core" rev="3.3.2.GA"/>
  </dependencies>
</ivy-module>

Обратите внимание на атрибут defaultconfmapping .Это говорит ivy загружать файлы jar из конфигурации «default», которая в Maven является областью «compile».

0 голосов
/ 19 марта 2011

Вы пробовали http://code.google.com/p/ivyroundup/?

0 голосов
/ 19 марта 2011

Я нашел этот пост очень полезным для настройки плюща для использования репозиториев Maven: http://www.mattgoldspink.co.uk/2010/06/19/re-visiting-spring-ivy-and-maven-copy-and-paste-configs/

0 голосов
/ 10 марта 2011

Обратите внимание, что Hibernate использует репозиторий JBoss maven, который должен быть включен в вашей системе:

http://community.jboss.org/wiki/MavenGettingStarted-Users

0 голосов
/ 10 марта 2011

Если у вас все еще есть версия maven, вы можете вызвать mvn dependency:tree и увидеть groupid и artifactid, которые hibernate определит по своей зависимости (если только не предоставлен hibernate).

Редактировать:

У нас есть эти спящие зависимости, использующие maven:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>3.3.2.GA</version>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>ejb3-persistence</artifactId>
  <version>1.0.2.GA</version>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-annotations</artifactId>
  <version>3.4.0.GA</version>
</dependency>

Вот эквивалент ivy.xml:

<dependency org="org.hibernate" name="ejb3-persistence" rev="1.0.2.GA"/>
<dependency org="org.hibernate" name="hibernate-annotations" rev="3.4.0.GA"/>
<dependency org="org.hibernate" name="hibernate-core" rev="3.3.2.GA"/>
...