Подтвердить что ты не робот

Где положить persistence.xml в библиотеку jar с помощью maven?

На работе мы имеем библиотеку сущностей, которая используется несколькими клиентами для библиотеки (несколько сервлетов, настольное приложение и т.д.). Библиотека сущностей состоит из классов JPA-Annotated и наиболее заметно persistence.xml.

Все проекты настраиваются с помощью maven.

Где должен быть сохранен файл persistence.xml? Он должен быть расположен внутри файла jar этой библиотеки сущностей, и я не уверен, как настроить это с помощью maven.

(Мы просто разбиваем проект на несколько небольших проектов)

'' 'UPDATE' '' Чтобы это было ясно, есть один Maven-Project A, содержащий persistence.xml и еще один (B), который зависит от этого проекта. У меня есть persistence.xml в src/main/resources/META-INF/persistence.xml в при попытке использовать EntityManager внутри A без проблем, insidie ​​B: ничего не работает.

EclipseLink дает следующее предупреждение:

[EL Warning]: The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units.  Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element

Я подозреваю, что persistence.xml не найден, но он присутствует в целевой банке.

4b9b3361

Ответ 1

Как упоминает @Dave выше src/main/resources, это место. Когда дело доходит до persistence.xml, оно должно быть помещено в папку META-INF. Итак, заключаем: src/main/resources/META-INF/persistence.xml.

Ответ 2

Я получил файл persistence.xml для работы в моей WAR, только когда он был помещен в WEB-INF/classes/META-INF, так же как и в документации:

http://docs.oracle.com/cd/E19159-01/819-3669/bnbrj/index.html гласит следующее:

Если вы упакуете модуль персистентности как набор классов в файле WAR, файл persistence.xml должен находиться в каталоге WAR файлов WEB-INF/classes/META-INF.

В своем проекте Eclipse я добавил это к пути сборки:

src\main\resources

У моего проекта Maven есть файл persistence.xml по следующему адресу:

src\main\resources\META-INF\persistence.xml

После запуска Maven clean install создается WAR:

WEB-INF\classes\META-INF\persistence.xml

Когда я помещаю эту WAR в папку веб-приложений Tomcat 7, она правильно развертывается, и JPA работает.

Ответ 3

Файлы конфигурации XML почти всегда принадлежат src/main/resources, в иерархии пакетов (как исходные файлы Java). Эти файлы будут скопированы в артефакт в той же иерархии.

Ответ 4

В файле maven pom.xml вам необходимо добавить каталог ресурсов, поэтому вам не нужно вручную добавлять его в путь сборки в eclipse.

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/resources</directory>
      </resource>
    </resources>
    ...
  </build>
  ...
</project>

см. http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html