Почему maven не упаковывает мой файл отображения гибернации?

Я использую Maven 2 и Hibernate для веб-приложения Java.

У меня есть файл отображения Hibernate, Domain.hbm.xml в той же исходной папке с несколькими классами домена.

Если я запустил mvn clean package , я обнаружил, что этот файл не копируется в файл war в целевой папке.

Однако, если я выполняю только mvn clean , а затем перехожу в eclipse и выбираю «Очистить» в меню «Проект», файл отправляется в соответствующее место в целевой папке. Затем я могу выполнить mvn package , чтобы успешно упаковать военный файл, имеющий доступ к базе данных.

Подходит ли для этого настройка pom? Что происходит?

7
задан IAdapter 27 August 2010 в 20:58
поделиться

2 ответа

Ресурсы, отличные от исходников Java, которые вы хотите разместить непосредственно в пути к классам (в вашем случае внутри /WEB-INF/classes), должны находиться в вашем каталоге src/main/resources, а не src/ основной/ява.

9
ответ дан 6 December 2019 в 07:24
поделиться

Если я запускаю mvn clean package, я обнаруживаю, что этот файл не копируется в файл войны в целевой папке.

Тогда файлы сопоставления, вероятно, находятся не в каталоге ресурсов по умолчанию (src/main/resources), а в исходном каталоге (src/main/java), и Maven победил. t копировать их в выходной каталог сборки по умолчанию.

Однако, если я сделаю только mvn clean, а затем перейду в eclipse и выберу Clean в меню Project, файл будет отправлен в соответствующее место в целевом объекте. Затем я могу сделать пакет mvn, чтобы успешно упаковать военный файл, который имеет доступ к базе данных.

Я предполагаю, что в Eclipse файлы из исходных каталогов копируются в выходной каталог сборки, включая файлы ресурсов приложения. Таким образом, это как-то «обманывает» Maven, когда вы запускаете package после этапа очистки Eclipse. Но это не имеет большого значения, мастер — Maven, все остальное не имеет значения.

Чтобы это исправить, либо переместите файлы сопоставления в src/main/resources.Или держите их в src/main/java и объявите исходный каталог как "дополнительный" каталог ресурсов:

<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
    </resource>
    <resource>
      <directory>src/main/java</directory>
      <excludes>
         <exclude>**/*.java</exclude>
      </excludes>
    </resource>
  </resources>
</build>

Некоторые люди делают это, я предпочитаю использовать отдельные каталоги.

14
ответ дан 6 December 2019 в 07:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: