2012-10-10 71 views
0

當我嘗試使用ant構建我的項目時出現錯誤。下面是構建文件:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="GPClient" default="dist" basedir="."> 
    <description> 
     simple example build file 
    </description> 
    <!-- set global properties for this build --> 
    <dirname property="client.basedir" file="${ant.file.GPClient}"/> 
    <property name="client.src" location="${client.basedir}/src"/> 
    <property name="client.build" location="${client.basedir}/build"/> 
    <property name="client.dist" location="${client.basedir}/dist"/> 
    <property name="client.done" location="${client.basedir}/done"/> 
    <property name="client.app" location="${client.basedir}/app"/> 
    <property name="client.webinf_classes" location="${client.basedir}/WEB-INF/classes"/> 
    <property name="server.dir" location="${client.basedir}/../GrahamsProjServer"/> 
    <property name="deploy.location" location="${client.basedir}/../../jboss-as-7.1.1.Final/standalone/deployments"/> 


    <path id="lib.classpath"> 
     <fileset dir="${client.basedir}"> 
      <include name="/lib/*.jar"/> 
      <!-- <exclude name="jboss-servlet-api_3.0_spec-1.0.0.Final.jar" /> --> 
     </fileset> 
     <!-- <fileset dir="${client.basedir}/properties"> 
     <include name="*.properties"/> 
    </fileset> 
    <fileset dir="${server.dir}/dist"> 
     <include name="*.jar"/> 
    </fileset> 
    <fileset dir="${client.basedir}/WEB-INF/lib"> 
     <include name="*.jar"/> 
    </fileset> --> 
    </path> 

    <path id="server.classpath"> 
     <fileset dir="${server.dir}/dist"> 
      <include name="*.jar"/> 
     </fileset> 
    </path> 

    <path id="mf.classpath"> 
     <path refid="${lib.classpath}"/> 
     <path refid="${server.classpath}"/> 
    </path> 

    <path id="war.classpath"> 
     <fileset dir="${client.basedir}/WEB-INF/lib"> 
      <include name="*.jar"/> 
     </fileset> 
    </path> 

    <target name="client.init"> 
    <!-- Create the time stamp --> 
    <tstamp/> 
    <!-- Create the build directory structure used by compile --> 
    <mkdir dir="${client.build}"/> 
    <mkdir dir="${client.dist}"/> 
    <mkdir dir="${client.done}"/> 
    <mkdir dir="${client.app}"/> 
    <mkdir dir="${client.webinf_classes}"/> 
    <mkdir dir="${client.webinf_classes}/grahamsprojclient/servlet"/> 
    </target> 

    <target name="client.compile" depends="client.init" 
     description="compile the source " > 

    <!-- Compile the java code from ${src} into ${dist} --> 
    <javac srcdir="${client.src}" destdir="${client.dist}" > 
     <classpath> 
      <path refid="mf.classpath"/> 
     </classpath> 
    </javac> 
    </target> 

    <target name="client.package" depends="client.compile" description="create the jar"> 
     <!-- <manifestclasspath property="manifest.path" jarfile="${dist}/GrahamsProjClient.jar"> 
      <classpath refid="mf.classpath"/> 
     </manifestclasspath> --> 

     <jar destfile="${client.app}/GrahamsProjClient.jar" basedir="${client.dist}" > 
      <fileset dir="${client.basedir}/properties"> 
       <include name="*.properties"/> 
      </fileset> 
      <fileset dir="${client.basedir}"> 
       <include name="lib/*.jar"/> 
       <!-- <exclude name="lib/jboss-servlet-api_3.0_spec-1.0.0.Final.jar" />--> 
      </fileset> 
      <manifest> 
       <attribute name="Class-Path" value="${mf.classpath}"/> 
       <attribute name="Main-Class" value="grahamsprojclient.main.Start"/> 
      </manifest> 
     </jar> 
    </target> 

    <!--<target name="deploy" depends="package" 
     description="generate the distribution" > 
    <ear destfile="${deploy.location}/GrahamsProjServer.ear" appxml="${client.basedir}/META-INF/application.xml" > 
     <metainf dir="${client.basedir}/META-INF"/> 
     <fileset dir="${dist}" includes="*.jar"/> 
    </ear> 
</target> --> 

    <target name="client.clean" 
     description="clean up" > 
    <!-- Delete the ${build} and ${dist} directory trees --> 
    <delete dir="${client.build}"/> 
    <delete dir="${client.dist}"/> 
    <delete dir="${client.app}"/> 
    <delete dir="${client.done}"/> 
    <delete dir="${client.webinf_classes}"/> 
    <echo message="Deleting files in ${deploy.location}"/> 
    <delete> 
     <fileset dir="${deploy.location}" > 
      <exclude name="*.txt" /> 
     </fileset> 
    </delete> 
    </target> 

    <target name="client.compile-war-lib"> 
     <mkdir dir="WEB-INF/classes"/> 
     <javac srcdir="${client.src}" destdir="WEB-INF/classes" debug="true" includeAntRuntime="false"> 
      <classpath refid="war.class.path"/> 
      <include name="**/*.java"/> 
     </javac> 
    </target> 

    <target name="client.compile-war" depends="client.init" description="compile the source " > 
    <!-- Compile the java code from ${src} into ${dist} --> 
    <javac srcdir="${client.basedir}/src/grahamsprojclient/servlet" 
      destdir="${client.basedir}/WEB-INF/classes/grahamsprojclient/servlet" > 
     <classpath> 
      <path refid="war.class.path"/> 
     </classpath> 
    </javac> 
    </target> 


    <target name="client.build_war" depends="client.package, client.compile-war" description="build war" > 
     <war destfile="${client.done}/GrahamsProjClient.war" webxml="WEB-INF/web.xml"> 
     <metainf dir="${client.basedir}/META-INF" includes="context.xml" /> 
     <lib dir="${client.basedir}/WEB-INF/lib"> 
      <exclude name="/CopyLibs"/> 
      <exclude name="*.ex" /> 
     </lib> 
     <classes dir="${client.basedir}/WEB-INF/classes/grahamsprojclient/servlet" > 
      <exclude name="*.java" /> 
     </classes> 
     <fileset dir="${client.basedir}" > 
      <include name="GrahamsProjClient-webstart.jnlp"/> 
      <include name="app/GrahamsProjClient.jar"/> 
      <include name="GrahamsProjStartAppPage.html"/> 
      <!-- <include name="lib/*.jar"/> 
      <include name="lib/jboss-servlet-api_3.0_spec-1.0.0.Final.jar"/> --> 
     </fileset> 
     </war> 
    </target> 

    <target name="client.deploy_war" depends="client.build_war" description="deploy war"> 
     <copy file="${client.done}/GrahamsProjClient.war" todir="${deploy.location}" /> 
    </target> 

</project> 

這裏是Ant構建日誌(誤差在底部):

client.init: 
Created dir: C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\build 
Created dir: C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\dist 
Created dir: C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\done 
Created dir: C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\app 
Created dir: C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\WEB-INF\classes 
Created dir: C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\WEB-INF\classes\grahamsprojclient\servlet 
client.compile: 
C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\build-client.xml:67: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 
Compiling 6 source files to C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\dist 

Unresolvable reference ${lib.classpath} might be a misuse of property expansion syntax. 
C:\Users\gbaldeck\Google Drive\Work\LearningAS7\GrahamsProjClient\build-client.xml:67: Reference ${lib.classpath} not found. 
BUILD FAILED (total time: 0 seconds) 

是什麼原因造成這種情況?我沒有看到我的路徑設置有什麼問題。

回答

5

您參考IDS lib.classpathserver.classpath定義的路徑,但是當你引用它們:

<path id="mf.classpath"> 
    <path refid="${lib.classpath}"/> 
    <path refid="${server.classpath}"/> 
</path> 

你把他們當作一個屬性,你還沒有定義。你可能意思是:

<path id="mf.classpath"> 
    <path refid="lib.classpath"/> 
    <path refid="server.classpath"/> 
</path> 
+0

是這樣!謝謝。 – Graham

0

我想你在第67行使用$ {lib.classpath},但是你沒有定義它。