有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

构建的WAR文件中的java Hibernate配置文件

我在Eclipse中有一个运行良好的web应用程序。我已经使用下面的ant脚本构建了一个war文件,它一直工作到程序尝试访问Hibernate:

<?xml version="1.0" encoding="UTF-8"?>
<!-- !DOCTYPE removes the warning: 
No grammar constraints (DTD or XML schema) detected for the document. 
-->
<!DOCTYPE project>
<project name="Audiclave" default="Deploy" basedir=".">
   <property name="src.dir" location="src" />
   <property name="build.dir" location="build" />
   <property name="dist.dir" location="dist" />
   <property name="build.classes" location="build/classes" />
   <property name="docs.dir" location="docs" />
   <property name="web.dir" location="WebContent" />
   <!-- Deletes the existing build, docs and dist directory-->
   <target name="clean">
       <delete dir="${build.classes}" />
       <delete dir="${build.dir}" />
       <delete dir="${docs.dir}" />
       <delete dir="${dist.dir}" />
   </target>

   <!-- Creates the  build, docs and dist directory-->
   <target name="makedir">
      <mkdir dir="${build.classes}" />
      <mkdir dir="${build.dir}" />
      <mkdir dir="${docs.dir}" />
      <mkdir dir="${dist.dir}" />
   </target>
   <path id="compile.classpath">
      <fileset dir="${web.dir}/WEB-INF/lib">
         <include name="*.jar" />
      </fileset>
   </path>
   <target name="compile" depends="clean,makedir">
      <javac srcdir="${src.dir}" debug="true" destdir="${build.classes}">
         <classpath refid="compile.classpath" />
       </javac>
   </target>
   <!-- Creates Javadoc -->
   <target name="docs" depends="compile">
      <javadoc packagenames="src" sourcepath="${src.dir}" destdir="${docs.dir}">
         <!-- Define which files / directory should get included, we include all -->
         <fileset dir="${src.dir}">
            <include name="**" />
         </fileset>
      </javadoc>
   </target>
   <target name="Deploy">
      <war destfile="${build.dir}/audiClave.war" webxml="${web.dir}/WEB-INF/web.xml">
         <!-- Include the compiled classes from the compile target -->
         <classes dir="${build.classes}" />

         <!-- Include any configuration files (hibernate) -->
         <fileset dir="${src.dir}" includes="**/*.xml" />

         <!-- Include any web content -->
         <fileset dir="${web.dir}" />
         <lib dir="${web.dir}/WEB-INF/lib" />
      </war>
   </target>
</project>

我遇到的问题是Hibernate配置文件的位置。在我的应用程序中,它们位于:

audiClave\src

但在部署的应用程序中,xml文件位于:

audiClave

鉴于我认为他们需要:

audiClave\WEB-INF\classes

我如何陈述:

<fileset dir="${src.dir}" includes="**/*.xml" />

将文件发送到WEB-INF\classes目录(如果需要的话)

编辑 已将脚本更改为包含以下内容,并且工作正常:

<target name="compile" depends="clean,makedir">
    <javac srcdir="${src.dir}" debug="true" destdir="${build.classes}">
        <classpath refid="compile.classpath" />
    </javac>
    <copy todir="${build.classes}">
        <fileset dir="${src.dir}" includes="**/*.xml,**/*.properties"/>
    </copy>
</target>

共 (1) 个答案

  1. # 1 楼答案

    让Ant <copy>将文件放入/WEB-INF/classes。你说得对,那是他们的归宿。确保创建目录路径