файл persistence.xml не найден во время тестирования maven - PullRequest
9 голосов
/ 17 сентября 2008

Я пытаюсь загрузить тестовые данные в тестовую базу данных во время сборки maven для интеграционного тестирования. persistence.xml копируется в target/test-classes/META-INF/ правильно, но я получаю это исключение при запуске теста.

javax.persistence.PersistenceException: Нет поставщика постоянства для EntityManager с именем aimDatabase

Похоже, он не находит и не загружает файл persistence.xml.

Ответы [ 6 ]

16 голосов
/ 25 января 2010

Только что решил ту же проблему с проектом JPA на основе Maven / Eclipse.

У меня был каталог META-INF в src/main/java, так как до фазы тестирования он не был скопирован в целевой каталог.

Перемещение этого каталога в src/main/resources решило проблему и гарантировало, что файл META-INF/persistence.xml присутствовал в target/classes при запуске тестов.

Я думаю , что фасет JPA поместил мой META-INF/persistence.xml файл в src/main/java, что оказалось корнем моей проблемы.

6 голосов
/ 04 сентября 2009

Я использую Maven2, и я забыл добавить эту зависимость в мой файл pom.xml:

 <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>3.4.0.GA</version>
 </dependency> 
2 голосов
/ 24 октября 2008

У меня была та же проблема, и дело не в том, что не удалось найти файл persistence.xml, а в том, что он не смог найти провайдера, указанного в XML.

Убедитесь, что в вашем XML-файле указаны правильные зависимости поставщика JPA и правильное определение поставщика.

есть. <provider>oracle.toplink.essentials.PersistenceProvider</provider>

В maven мне пришлось установить 2 фляги toplink-essentials локально, так как не было общедоступных репозиториев, которые содержали бы зависимости.

2 голосов
/ 17 сентября 2008

Если это на окнах, вы можете использовать procmon sysinternal, чтобы узнать, проверяет ли он правильный путь.

Просто отфильтруйте по пути -> содержит -> persistence.xml. Procmon обнаружит любые попытки открыть файл с именем persistenc.xml, и вы можете проверить, чтобы увидеть путь или пути, которые пробовали.

Подробнее о procmon смотрите здесь: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

1 голос
/ 09 июля 2010

Ваш файл persistence.xml находится в каталоге scr / test / resources? Потому что я столкнулся с похожими проблемами.

Все работает нормально, пока мой persistence.xml находится в src / main / resources .

Если я переместу persistence.xml в src / test / resources , то ничего больше не работает

Единственный полезный, но печальный ответ здесь: http://jira.codehaus.org/browse/SUREFIRE-427

Похоже, что сейчас это невозможно по непонятным причинам. : - (

1 голос
/ 07 ноября 2008

у нас та же проблема, немного подправил проект и наконец нашел следующее проблема (более четкое описание ошибки): на oracle.toplink.essentials.ejb.cmp3.persistence. PersistenceUnitProcessor.computePURootURL (PersistenceUnitProcessor.java:248)

С этой информацией мы вспомнили основное правило: НЕТ БЕЛЫХ ПРОСТРАНСТВ В ИМЯ ПУТИ !!!

Попробуй это. У нас работает улыбка . Может быть, когда-нибудь это будет исправлено.

Надеюсь, это работает для вас. Удачи.

...