2013-01-23 23 views
-1

我在Java 6和Ant 1.6上構建的工作正常,但我現在在Java 7和Ant 1.8.4上,並且出現了一些問題。我已經克服了很多,但有一個我堅持不懈。Ant 1.8.4未能解析來自其他文件的refid - 但是Ant 1.6很好

我有一個包含一些共同的目標文件,common.xml(只包含目標 - 沒有XML版本字符串或項目):

<target name="common_init"> 
    <path id="project.class.path"> 
     ... stuff 
    </path> 
</target> 

和兩個構建文件: buildfile1.xml

<?xml version="1.0"?> 
<!DOCTYPE project [ 
    <!ENTITY common SYSTEM "file:./common.xml"> 
]> 

<project name="proj1" default="main" basedir="."> 
    <!-- import common targets using a xml entity definition --> 
    &common; 
    ... 
    <target name="compile" depends="common_init"> 
     <javac 
      srcdir="..." destdir="..." debug="on" deprecation="off" optimize="on" includes="**/*.java" source="${javac.target}" target="${javac.target}"> 

      <src path="..."/> 
      <classpath refid="project.class.path"/> 
     </javac> 
    </target> 
    ... 
</project> 

工作正常。但幾乎相同的第二內建文件給我的錯誤:

Reference project.class.path not found. 

第二內建文件是:

<?xml version="1.0"?> 
<!DOCTYPE project [ 
    <!ENTITY common SYSTEM "file:./common.xml"> 
]> 

<project name="proj1" default="main" basedir="."> 
    <!-- import common targets using a xml entity definition --> 
    &common; 
    ... 
    <target name="compile" depends="common_init"> 
     <javac 
      srcdir="..." destdir="..." debug="on" deprecation="off" optimize="on" includes="**/MyFile.java" source="${javac.target}" target="${javac.target}"> 

      <classpath refid="project.class.path"/> 
     </javac> 
    </target> 
    ... 

我想(在救命稻草),同樣的項目名稱可能是這個問題,但沒有。這兩個構建文件都從一個更高層次的構建文件使用:

<ant antfile="buildfileX.xml"...> 

任何幫助非常感謝。

保羅

回答

-1

我在我原來的職位代碼只是僞代碼,我省略了造成問題的原因,對此我道歉的重要區別。

正在工作的構建文件與我原來的文章一樣。發生故障的一個也張貼,但它被稱爲略有不同:

<project name="proj1" default="main" basedir="."> 
    <!-- import common targets using a xml entity definition --> 
    &common; 
    ... 
    <target name="compile" depends="common_init"> 
     <antcall target="compile1"/> 
    </target> 

    <target name="compile1" depends=""> 
     <javac 
      srcdir="..." destdir="..." debug="on" deprecation="off" optimize="on" includes="**/MyFile.java" source="${javac.target}" target="${javac.target}"> 

      <classpath refid="project.class.path"/> 
     </javac> 
    </target> 
    ... 
</project> 

所以一定有螞蟻1.6和1.8.4之間的變化,其中,任務之間的默認繼承發生了變化。做出了多麼荒謬的改變。它只能引起人們(像我這樣的人!!)問題。無論如何,希望這篇文章能夠幫助那些遇到同樣問題的人。

Paul

+0

目前還不清楚錯誤的原因是什麼,以及您的修復是什麼。對構建文件中哪些內容不正確的實際解釋,相對於哪些內容有效,將會非常有幫助。 –