为什么maven没有打包我的hibernate-mapping文件?

时间:2010-08-27 20:35:36

标签: java hibernate maven-2

我正在使用Maven 2和Hibernate作为Java Web应用程序。

我有一个Hibernate映射文件,Domain.hbm.xml在同一个源文件夹中,有几个域类。

如果我运行mvn clean package,我发现此文件未复制到目标文件夹中的war文件中。

但是,如果我只执行mvn clean然后转到eclipse并从“项目”菜单中选择“清理”,则会将文件发送到目标中的适当位置。然后我可以mvn package成功打包一个有权访问数据库的war文件。

这是一个pom设置吗?发生了什么事?

4 个答案:

答案 0 :(得分:13)

  

如果我运行mvn clean包,我发现该文件没有被复制到目标文件夹中的war文件中。

然后映射文件可能不在默认资源目录(src/main/resources)中,而是在源目录(src/main/java)中,默认情况下Maven不会将它们复制到构建输出目录。 / p>

  

但是,如果我只进行mvn clean然后转到eclipse并从Project菜单中选择Clean,则该文件将被发送到目标中的适当位置。然后,我可以执行mvn包来成功打包一个可以访问数据库的war文件。

在Eclipse下,我的猜测是源目录中的文件被复制到构建输出目录,包括应用程序资源文件。因此,在Eclipse清理步骤之后运行package时,这会以某种方式“欺骗”Maven。但这并不重要,主人是Maven,其他一切都无关紧要。

要解决此问题,请将映射文件移至src/main/resources。或者将它们保存在src/main/java中,并将sources目录声明为“额外”资源目录:

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

有些人这样做,我更喜欢使用单独的目录。

答案 1 :(得分:9)

除了Java源之外的资源,你想直接在类路径上(在你的情况下在/ WEB-INF / classes中)必须放在你的src / main / resources目录中,而不是src / main / java。

答案 2 :(得分:0)

我有同样的问题。这解决了我的问题。

<sourceDirectory>src/main/java</sourceDirectory>  
    <resources>
        <resource>
            <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
        </resource>
    </resources>

答案 3 :(得分:0)

也遇到相同的问题

在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版本,请遵循相应的版本布局。