2014-11-03 58 views
1

我有以下Ant文件,在Ant構建排除文件

<project> 
<path id="build-classpath"> 
    <fileset dir="/opt/apache-tomcat-7.0.53/lib"> 
     <include name="*.jar"/> 
    </fileset> 
    <fileset dir="../../lib"> 
     <include name="*.jar"/> 
    </fileset> 
    <fileset dir="../../bin"> 
     <include name="*.jar"/> 
    </fileset> 
</path> 
<target name="compile"> 
    <mkdir dir="classes"/> 
    <mkdir dir="bin"/> 
    <javac srcdir="src/" destdir="classes" includeantruntime="false"> 
    <exclude name="/src/web/DaemonSocket.java"/> 
    <classpath refid="build-classpath"/> 
    </javac> 
    <javac srcdir="src/" destdir="bin" includeantruntime="false"> 
    <classpath refid="build-classpath"/> 
    </javac> 
</target> 
<target name="clean"> 
    <delete dir="classes"/> 
    <delete dir="bin"/> 
    </target> 
</project> 

在與代碼排除行,

<javac srcdir="src/" destdir="classes" includeantruntime="false"> 
    <exclude name="/src/web/DaemonSocket.java"/> 
    <classpath refid="build-classpath"/> 
    </javac> 

我希望不被編譯到classes文件夾中的文件DaemonSocket.java 。然而,每次運行ant compile時,DaemonSocket.java文件將被編譯到classesbin文件夾中。爲什麼exclude不能在這種情況下工作?

+1

@DaveNewton https://ant.apache.org/manual/Types/fileset.html – jgr208 2014-11-03 14:31:20

+0

其重複http://stackoverflow.com/questions/3808612/ant- how-to-use-exclude-excludesfile-with-javac – 2014-11-03 14:31:54

+0

@ jgr208 Ooo right;忘了它是一種繼承: – 2014-11-03 14:57:24

回答

3

嘗試通配符:

<javac srcdir="src/" destdir="classes" includeantruntime="false"> 
    <exclude name="**/DaemonSocket.java"/> <!--You should use relative path here /src/ should be removed if you dont want to use wildcard--> 
    <classpath refid="build-classpath"/> 
    </javac> 
+0

謝謝,我實際上在我發佈後自己計算出了這一點,並等待看看是否有人回答這個問題,而你確實!感謝您的幫助 – jgr208 2014-11-03 14:30:33

+0

非常歡迎您:) – SMA 2014-11-03 14:31:23