ANT - 如何使用exclude,用javac排除文件?

时间:2010-09-27 23:25:45

标签: java ant javac

查看了stackoverflow上的几篇文章以及其他来源(在线+ ANT定义指南),但到目前为止它们都没有帮助。我无法从编译中排除该文件。

我只有一个文件想要从编译中排除,而ANT文档并没有真正说明细节。 我正在尝试排除HTMLParser.java编译。 也尝试使用excludesfile。但它仍符合HTMLParser.java

我写了简单的ANT来检查下面尝试不同的变体。

有谁能告诉我出了什么问题?

<javac srcdir="${utilitiesSrc}" destdir="${dest}">
      <excludesfile name="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\utilities\HTMLParser.java" />
</javac>

<project 
     name="CompileMasatosan"  
     default="main"
     basedir="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan">

     <property name="dest"
    location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\WEB-INF\classes" />


     <property name="utilitiesSrc" 
        location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\utilities" />

    <javac srcdir="${utilitiesSrc}" destdir="${dest}">
         <exclude name="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\utilities\HTMLParser.java" />
    </javac>
</project>

HTMLParser.java我认为没有依赖,因为我评论了除了类声明行以外的所有行。

HTMLParser.java

package com.masatosan.utilities;

public class HTMLParser {
/*  commenting out since Eclipse doesn't like some characters :(

    public static final String escapeHTML(String s){
           StringBuffer sb = new StringBuffer();
           int n = s.length();
           for (int i = 0; i < n; i++) {
              char c = s.charAt(i);
              switch (c) {
                 case '<': sb.append("&lt;"); break;
                 case '>': sb.append("&gt;"); break;
                 case '&': sb.append("&amp;"); break;
                 case '"': sb.append("&quot;"); break;
                 case 'à': sb.append("&agrave;");break;
                 case 'À': sb.append("&Agrave;");break;
                 case 'â': sb.append("&acirc;");break;
                 case 'Â': sb.append("&Acirc;");break;
                 case 'ä': sb.append("&auml;");break;
                 case 'Ä': sb.append("&Auml;");break;
                 case 'Ã¥': sb.append("&aring;");break;
                 case 'Ã…': sb.append("&Aring;");break;
                 case 'æ': sb.append("&aelig;");break;
                 case 'Æ': sb.append("&AElig;");break;
                 case 'ç': sb.append("&ccedil;");break;
                 case 'Ç': sb.append("&Ccedil;");break;
                 case 'é': sb.append("&eacute;");break;
                 case 'É': sb.append("&Eacute;");break;
                 case 'è': sb.append("&egrave;");break;
                 case 'È': sb.append("&Egrave;");break;
                 case 'ê': sb.append("&ecirc;");break;
                 case 'Ê': sb.append("&Ecirc;");break;
                 case 'ë': sb.append("&euml;");break;
                 case 'Ë': sb.append("&Euml;");break;
                 case 'ï': sb.append("&iuml;");break;
                 case '�': sb.append("&Iuml;");break;
                 case 'ô': sb.append("&ocirc;");break;
                 case 'Ô': sb.append("&Ocirc;");break;
                 case 'ö': sb.append("&ouml;");break;
                 case 'Ö': sb.append("&Ouml;");break;
                 case 'ø': sb.append("&oslash;");break;
                 case 'Ø': sb.append("&Oslash;");break;
                 case 'ß': sb.append("&szlig;");break;
                 case 'ù': sb.append("&ugrave;");break;
                 case 'Ù': sb.append("&Ugrave;");break;         
                 case 'û': sb.append("&ucirc;");break;         
                 case 'Û': sb.append("&Ucirc;");break;
                 case 'ü': sb.append("&uuml;");break;
                 case 'Ü': sb.append("&Uuml;");break;
                 case '®': sb.append("&reg;");break;         
                 case '©': sb.append("&copy;");break;   
                 case '€': sb.append("&euro;"); break;
                 // be carefull with this one (non-breaking whitee space)
                 case ' ': sb.append("&nbsp;");break;         

                 default:  sb.append(c); break;
              }
           }
           return sb.toString();
    }
    */
}//

更新

正如评论中所建议的,我将excludesfile name属性更改为srcdir的相对路径,就是这样!所以剪辑看起来像:

<javac srcdir="${utilitiesSrc}" destdir="${dest}">
      <excludesfile name="HTMLParser.java" />
</javac>

2 个答案:

答案 0 :(得分:8)

尝试将exclude指定为相对于javac srcdir=${utilitiesSrc})目录的路径。

例如,您的上一个javac任务将是:

<javac srcdir="${utilitiesSrc}" destdir="${dest}">
    <exclude name="HTMLParser.java" />
</javac>

如果文件隐藏在${utilitiesSrc}目录下的子目录中的某个位置,则可以将其与wildcard匹配:

<javac srcdir="${utilitiesSrc}" destdir="${dest}">
    <exclude name="**/HTMLParser.java" />
</javac>

答案 1 :(得分:5)

我想你已经检查过的明显事实是,你正在编译的任何内容都没有HTMLParser中的依赖项。如果是这种情况,javac命令将反正编译该文件。

为了澄清,上面的问题是使用带有exclude属性的绝对路径。当给出srcdir时,ant会创建一个带有排除文件名的隐式路径。