Почему динамический веб-проект создает мета-информацию в папке webapp?

Я читал, что Meta-inf нужно разместить в src / main / resources. Когда я создаю динамический веб-проект в Eclipse, мне кажется, что Meta-Inf помещается в папку webapp вместе с Web-Inf.

Где правильное место для Meta-Inf? Должен ли он быть на пути класса? Мне нужно настроить файл persistence.xml, не уверен, что это имеет какое-либо значение.


person smackenzie    schedule 29.07.2014    source источник


Ответы (1)


"Я читал, что Meta-inf нужно разместить в src / main / resources"

Не обязательно. Но вы правы, он должен быть в пути к классам. С src / main / resources все (с maven) там помещается в путь к классам без ресурсов /. Имейте в виду, что тип динамического веб-проекта не относится к типу Maven (хотя при необходимости его можно легко сделать).

«Когда я создаю динамический веб-проект в Eclipse, мне кажется, что Meta-Inf помещается в папку webapp вместе с Web-Inf».

Да, это для Manifest, как и для любого другого jar-файла. Не META-INF для пути к классам

«Мне нужно настроить файл persistence.xml»

Вы можете вручную создать META_INF и поместить его в src (без main / resources, если вы не конвертируете его в проект maven). НО, самый простой способ настроить JPA в ваш динамический веб-проект - это:

  1. Щелкните правой кнопкой мыши свой проект и перейдите в свойства.
  2. Найдите фасеты проекта, щелкните его и выберите JPA.
  3. Внизу может быть ссылка для дополнительных конфигураций. Щелкните по нему
  4. В зависимости от реализации JPA вы должны соответствующим образом настроить реализацию в этом диалоговом окне.
  5. Когда вы закончите, вы должны увидеть META-INF в src с созданным для вас persistence.xml.

См. руководство javaee по постоянству. Здесь утверждается:

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

Если вы откроете представление навигатора (Windows -> показать представление -> навигатор), вы увидите каталог сборки с классами / META-INF / persistence.xml

person Paul Samsotha    schedule 29.07.2014
comment
Спасибо, поэтому я преобразовался в проект maven. Могу ли я просто переместить meta-inf в src / main / resources, и он будет помещен в цель web-inf / classes / meta-inf в процессе сборки? Я полагаю, это не повлияет на манифест, который может перемещаться вместе с ним? Я предполагаю, что у меня не может быть 2 папок с мета-информацией, одна для манифеста, а другая для всего остального. - person smackenzie; 29.07.2014
comment
Вы можете оставить исходный META-INF, если хотите. Maven все равно воссоздает его (если вы его удалите). Это нужно. Но да, вы можете просто создать новый META-INF в src / main / resources или в src / main / java. Они оба оказываются в одном месте. Чаще всего это можно увидеть в ресурсах, хотя - person Paul Samsotha; 29.07.2014