ANT - как использовать exclude, excludefile с javac - PullRequest
4 голосов
/ 28 сентября 2010

Посмотрел несколько постов по 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();
    }
    */
}//

UPDATE

Как предлагается в комментарии, я изменяю атрибут имени excludefile на относительный путь srcdir, и все! Таким образом, разрезанный выглядит так:

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

Ответы [ 2 ]

8 голосов
/ 28 сентября 2010

Попробуйте указать exclude в качестве пути относительно каталога javac srcdir (=${utilitiesSrc}).

Например, ваша последняя задача javac будет:

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

Если файл похоронен где-то в подкаталоге в каталоге ${utilitiesSrc}, вы можете сопоставить его с подстановочным знаком :

<javac srcdir="${utilitiesSrc}" destdir="${dest}">
    <exclude name="**/HTMLParser.java" />
</javac>
5 голосов
/ 28 сентября 2010

Я предполагаю, что вы уже проверили, что ничто из того, что вы компилируете, не имеет зависимости в HTMLParser. Если это так, команда javac все равно скомпилирует файл.

Для пояснения, проблема выше заключалась в использовании абсолютного пути со свойством exclude. Когда указан srcdir, ant создает неявный путь с именами исключаемых файлов.

...