2015-04-02 59 views
0

最早需要您的幫助,我一直在爲這一段時間而煩惱。Ant構建問題:創建的附加文件夾

下面是我的Ant腳本。

 <property name="build.dir" value="${basedir}/build"/> 
    <property name="lib.dir" value="${basedir}/lib"/> 
    <property name="src.dir" value="${basedir}/allocator"/> 
    <property name="classes.dir" value="${basedir}/classes"/> 
    <property name="jar.dir"  value="${basedir}/jar"/> 
    <property name="main-class" value="allocator.Allocator"/> 
     <path id="classpath_ref"> 
     <pathelement path="${basedir}/"/> 
     <fileset dir="${lib.dir}" includes="*.jar"/> 
      </path> 

    <target name="clean"> 
     <delete dir="${classes.dir}" /> 
     <delete dir="${build.dir}" /> 
     <delete dir="${jar.dir}" /> 
    </target> 

    <target name="compile"> 
     <mkdir dir="${classes.dir}"/> 
     <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath_ref" includeantruntime="false"> 
      <src path="${basedir}/supportlibraries"/> 
      <src path="${basedir}/com/xyz/framework"/> 
      </javac> 
     <copy todir="${build.dir}"><fileset dir="${src.dir}" excludes="**/*.java"/> 
     </copy> 
    </target> 

    <target name="jar" depends="compile"> 
     <mkdir dir="${jar.dir}"/> 
     <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${build.dir}"> 
      <manifest> 
       <attribute name="Main-Class" value="${main-class}"/> 
      </manifest> 
     </jar> 
    </target> 
    <target name="run" depends="jar"> 

       <java classname="${main-class}" fork="true" > 
        <arg line="username"/> 
        <arg line="password"/> 
        <classpath> 
        <path refid="classpath_ref"/> 
        <pathelement location="${jar.dir}/${ant.project.name}.jar"/> 
        </classpath> 
       </java> 
      </target> 
    <target name="main" depends="clean,run"/> 

</project> 

當我嘗試從日食它運行Ant構建是創建一個額外的文件夾分配,supportlibraries和COM/XYZ /框架類的文件夾內。爲什麼它創建額外的文件夾?由於運行目標執行時無法找到分配器類的附加文件夾。請讓我知道我是否缺少任何東西

回答

0

"compile"<target>中刪除<copy>

"jar"目標的<jar>應該是:

<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> 
    <manifest> 
     <attribute name="Main-Class" value="${main-class}"/> 
    </manifest> 
</jar> 

在上面的代碼中,basedir${classes.dir}代替${build.dir}

我的腳本中沒有看到需要build.dir。所有對它的引用都可能被刪除。

+0

感謝您指出$ {build.dir}錯誤並立即對其進行更改。但它仍然在類中創建所有三個文件夾。這是預期的結果嗎? – 2015-04-02 14:42:21

+0

是的,這是預期的結果。 ''創建這些目錄。 – 2015-04-02 18:50:42