Почему maven не упаковывает мой файл отображения спящего режима? - PullRequest
6 голосов
/ 28 августа 2010

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

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

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

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

Подходит ли для этого помпа? Что происходит?

Ответы [ 4 ]

13 голосов
/ 28 августа 2010

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

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

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

В 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>

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

9 голосов
/ 28 августа 2010

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

0 голосов
/ 29 октября 2018

Столкнувшись с такой же проблемой

Следующие изменения в pom.xml решили мою проблему

<build>
    <finalName>spring-mvc-jquery</finalName>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Для другой версии maven следуйте соответствующей компоновке версии.

0 голосов
/ 30 декабря 2015

У меня была такая же проблема.Это решило мою проблему.

<sourceDirectory>src/main/java</sourceDirectory>  
    <resources>
        <resource>
            <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
        </resource>
    </resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...