2014-12-08 74 views
-3

我想將我的hibernate配置xml文件複製到屬於POJO內置的jar中。以下是我的Ant build.xml文件(我得到這個從hereAnt build不會複製xml文件

<project name="Ant-Test" default="main" basedir="."> 
    <!-- Sets variables which can later be used. --> 
    <!-- The value of a property is accessed via ${} --> 
    <property name="src.dir" location="src"/> 
    <property name="build.dir" location="bin"/> 
    <property name="dist.dir" location="dist"/> 
    <property name="docs.dir" location="docs"/> 
    <!-- Deletes the existing build, docs and dist directory--> 
    <target name="clean"> 
    <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.dir}"/> 
    <mkdir dir="${docs.dir}"/> 
    <mkdir dir="${dist.dir}"/> 
    </target> 
    <!-- Compiles the java code (including the usage of library for JUnit --> 
    <target name="compile" depends="clean, makedir"> 
    <javac srcdir="${src.dir}" destdir="${build.dir}"> 
     <classpath> 
     <pathelement path="/jars/log4j.jar"/> 
     </classpath> 
    </javac> 
    </target> 
    <!-- copy hbm files ${dist.dir} --> 
    <target name="copy-hbm" depends="compile" description="Copy hibernate files"> 
     <copy todir="${build.dir}" > 
      <fileset dir="${src.dir}" includes="*.xml" /> 
     </copy> 
    </target> 
    <!-- hbm copy over --> 
    <!-- 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> 
    <!--Creates the deployable jar file --> 
    <target name="jar" depends="compile"> 
    <jar destfile="${dist.dir}\my-hibernate-pojo.jar" basedir="${build.dir}"> 
     <manifest> 
     <attribute name="Main-Class" value="test.Main"/> 
     </manifest> 
    </jar> 
    </target> 
    <target name="main" depends="copy-hbm, jar"> 
    <description>Main target</description> 
    </target> 
</project> 

這將生成jar文件,但配置Hibernate XML s的不會被複制到瓶子裏。任何一個讓我知道問題出在哪裏可以存在

+0

您正在運行哪個目標? – thekbb 2014-12-08 06:16:43

+0

xml文件存儲在哪裏?您的''目標將它們從'bin'複製到'dist',但'bin'被''目標清空,所以我無法知道xml文件如何放入'bin'。 – 2014-12-11 18:16:32

+0

你的「jar」目標從「$ {build.dir}」中創建jar。您的copy-hbm應該將hbm文件從其源文件複製到{build.dir}。在調試主體之前,請測試各個目標。另外,jar目標(在你的情況下)必須依賴於「copy-hbm」。 – Jayan 2014-12-12 05:09:13

回答

3

首先,我要感謝所有回答我的問題的人。
我發現這個問題是錯誤的,包括xml文件名稱參數。在這裏,我張貼了我發現的解決方案,因爲這可能會幫助其他人。

我將copy-hbm target修改爲如下所示。

<copy todir="${build.dir}" > 
      <fileset dir="${src.dir}"> 
       <include name="**/*.xml" /> 
      </fileset> 
     </copy> 

我作出是的變化,包括= 「*。XML」替換爲名稱= 「**/*。XML」。路徑定義錯誤。一些學分應該提供給this問題,因爲我拿起他設置包含課程路徑的方式

+0

指定''' ''''這樣你就可以拿起屬性文件等 – 2014-12-17 12:12:49

0
  1. 變化依賴於main包括的copy-hbm代替 compile讓你的副本運行
  2. 變化無論是副本任務或jar任務具有相同的目的地/資源。您目前正在複製XML文件build.dir然後不和諧了dest.dir
+0

謝謝thekbb。但是,進行了更改,但仍不會複製xml。構建XML在問題中進行了修改和更新。 – 2014-12-08 07:21:44

+0

這個問題仍然存在jar任務的基礎,就像'build.dir'一樣... ...將不會得到你已經複製到'dist.dir'的xml文件。改變你的'copy-hbm'任務,讓'todir = $ {build.dir}' – thekbb 2014-12-08 20:56:29

+0

我感謝你的支持。即使按照你的建議改變了xml後,我仍然無法解決這個問題。我更新了我的問題中的xml。 – 2014-12-09 12:42:45

2

我能夠讓它改變你的copy-hbm目標以下工作:

<target name="copy-hbm" depends="compile" description="Copy hibernate files"> 
    <copy todir="${build.dir}" > 
     <fileset dir="${src.dir}" includes="*.xml" /> 
    </copy> 
</target> 

唯一更改是dir應該是srctodir應該是bin

這對我有效。希望它也適用於你。

+0

感謝您的回答。我嘗試了代碼,但它對我沒有用。我使用Ant 1.7。這是否重要? – 2014-12-11 16:10:20

+0

哦!這很奇怪..我能夠使它正好適應這種變化..我甚至通過重新測試XML並粘貼此代碼段並重新運行螞蟻來重新測試它。對於它的價值,我有螞蟻1.9.4。我真的不認爲這應該很重要... – anacron 2014-12-11 19:29:13

+0

您的腳本沒有將XML文件從SRC文件夾複製到bin文件夾,這就是爲什麼它沒有被捆綁到jar中。當你使用我的代碼片段進行測試時,你是否從這篇文章中獲取了XML,然後將我的代碼片段放在你的文章中?或者你在電腦上使用了不同的電腦嗎? – anacron 2014-12-11 19:35:07