Почему maven не упаковывает мой файл hibernate-mapping?
Я использую Maven 2 и Hibernate для веб-приложения Java.
у меня есть файл Hibernate-mapping,Domain.hbm.xml
в одной исходной папке с несколькими классами домена.
если я запускаю mvn clean package
Я обнаружил, что этот файл не копируется в файл war в целевой папке.
однако, если я только mvn clean
а затем перейдите в eclipse и выберите Очистить из меню проекта, файл отправляется в соответствующее место в целевом объекте. Тогда я смогу сделать mvn package
успешно пакет war-файл, который имеет доступ к базе данных.
является ли настройка pom для этого? Что происходит?
3 ответов
ресурсы, отличные от источников Java, которые вы хотите получить на пути к классам напрямую (в вашем случае внутри /WEB-INF/classes), должны идти в каталог src/main/resources, а не src/main/java.
если я запускаю mvn clean package, я обнаруживаю, что этот файл не копируется в файл war в целевой папке.
тогда файлы сопоставления, вероятно, не находятся в каталоге ресурсов по умолчанию (src/main/resources
), но в исходном каталоге (src/main/java
) и Maven не будет копировать их в выходной каталог сборки по умолчанию.
однако, если я делаю только mvn clean, а затем иду в eclipse и выбираю Clean из меню проекта, файл отправляется в подходящее место в мишени. Затем я могу сделать пакет mvn, чтобы успешно упаковать файл war, который имеет доступ к базе данных.
в Eclipse я предполагаю, что файлы из исходных каталогов копируются в выходной каталог сборки, включая файлы ресурсов приложения. Так что это как-то" трюк " Maven при запуске package
после шага Eclipse clean. Но это не имеет значения, мастер-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>
некоторые люди делают это, я предпочитаю использовать отдельные каталоги.
У меня была та же проблема. Это решило мою проблему.
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>