Ответ 1
Благодаря sionnach733, которые положили меня на правильный путь
Для моих проектов Необходимость я перегруппируйте все записи persistence.xml в одном базовом проекте, который я связываю как зависимость maven, где мне нужно.
Проблема в том, что среда eclipse всегда жалуется на
No persistence.xml file found in project
Есть ли у вас время для затмения? Благодаря
Благодаря sionnach733, которые положили меня на правильный путь
Window->Preferences->Java Persistence-> JPA-> Errors/warnings-> Project
Затем измените его с ошибкой на все, что вам нравится (warning/info/ignore). Вы также можете выбрать настройку конкретных параметров проекта, если вы не хотите, чтобы это повлияло на другие проекты.
Если эта ошибка возникает в проекте Maven, который не требует фасета JPA, вы можете сказать m2e не применять активацию JPA (по существу, не добавлять фасет JPA во время настройки проекта), установив следующее свойство в файле pom.xml: затронутый проект:
<properties>
<m2e.jpa.activation>false</m2e.jpa.activation>
</properties>
Если вы нажмете CTRL-SPACE
в существующем теге <properties>
, в источнике pom.xml content-assist предоставит ярлык для создания свойства, поэтому вам не нужно запоминать синтаксис, только это контентная помощь есть...;)
После применения свойства обязательно запустите Maven -> Update Project (Alt-F5)
для данного проекта. Возможно, вам придется один раз удалить фасет JPA из затронутого проекта вручную на странице свойств проекта.
Для тех, кто задается вопросом, почему m2e считает, что в первую очередь необходимо добавить фасет JPA: это обрабатывается классом JpaProjectConfigurator
в плагине m2e/WTP eclipse и может быть настроен с помощью реализации детекторов фасетов (которые все должны расширять Класс AbstractFacetDetector
и регистрация их в точке расширения org.eclipse.m2e.wtp.facetDetectors
). Таким образом, фасет может активироваться установленным вами плагином или обнаружением по умолчанию, встроенным в функцию Eclipse m2e/WTP, которая в основном ищет в проектах существующий файл persistence.xml
или orm.xml
или библиотеку поставщика JPA путь к классам Это происходило, когда артефакт бизнес-логики зависел от моего артефакта постоянного уровня (с включенным разрешением рабочей области, что может быть частью проблемы), у которого был META-INF/persistence.xml
, но артефакт бизнес-логики - нет.
Для получения дополнительной информации см. M2E-WTP/New и Noteworthy/1.0.0 и rg.eclipse.m2e.wtp.jpa.internal.configurators.JpaProjectConfigurator исходный код.
ИМХО, принятый ответ не является хорошим советом, так как неправильно устанавливать серьезность ошибки как "Игнорировать", так как тогда Eclipse не будет предупреждать о проектах, которые действительно являются проектами JPA и, следовательно, имеют/нуждаются в аспекте JPA и, следовательно, должны предоставлять persistence.xml
в ожидаемом местоположении (наименование и местоположение могут быть важны для артефактов, развернутых в средах Java EE).
Кроме того, благодаря правильной настройке проекта, отличного от JPA (то есть без лишнего аспекта JPA), Eclipse не будет тратить время на проверку JPA и мониторинг изменений JPA в проекте. Возможно, вы заметили JPA Project Change Event Handler (waiting)
в представлении Progress (особенно при наличии нескольких проектов JPA в рабочей области). Они больше не работают для проектов, которые не требуют JPA, когда фасет JPA удален.
Все остальные ответы на этот вопрос касаются проблемы, заставляя Eclipse не жаловаться на ошибку.
Правильное решение проблемы - удалить фасет JPA из вашего проекта. Вы можете сделать это, щелкнув правой кнопкой мыши по проекту в Project Explorer, в меню выберите "Свойства". Оттуда перейдите в "Фасеты проекта" и убедитесь, что запись JPA снята. Нажмите Применить, затем ОК. Перейдите в меню "Проект" и выберите "Очистить". Это удалит ложную ошибку.
Я избавился от этого, отключив фасет JPA для моего проекта Java.
1. go to .setting directory of the project
2. modify org.eclipse.wst.common.project.facet.core.xml
remove the following:
<installed facet="jpt.jpa" version="2.0"/>
3. Refresh the project
Ура !!!
Я предполагаю, что вы настроили точку зрения JPA.
Я только что создал "пустой" persistence.xml в src/main/java/META-INF. Это было бы видно maven, так что никогда не будет дальше... Это хак, я знаю, но он работает...