JavaAnt如何在javac中使用exclude、excludesfile?
查看了stackoverflow上的几个帖子以及其他来源(在线+蚂蚁定义指南),但到目前为止没有一个有用。我无法从编译中排除该文件
我只想从编译中排除一个文件,而ANT文档并没有真正说明细节。
我试图从编译中排除HTMLParser.java
。
也尝试使用excludesfile
。但它仍然符合HTMLPasser。爪哇
我写了一个简单的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>
HTMLPasser。我相信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("<"); break;
case '>': sb.append(">"); break;
case '&': sb.append("&"); break;
case '"': sb.append("""); break;
case 'Ã ': sb.append("à");break;
case 'À': sb.append("À");break;
case 'â': sb.append("â");break;
case 'Â': sb.append("Â");break;
case 'ä': sb.append("ä");break;
case 'Ä': sb.append("Ä");break;
case 'Ã¥': sb.append("å");break;
case 'Ã…': sb.append("Å");break;
case 'æ': sb.append("æ");break;
case 'Æ': sb.append("Æ");break;
case 'ç': sb.append("ç");break;
case 'Ç': sb.append("Ç");break;
case 'é': sb.append("é");break;
case 'É': sb.append("É");break;
case 'è': sb.append("è");break;
case 'È': sb.append("È");break;
case 'ê': sb.append("ê");break;
case 'Ê': sb.append("Ê");break;
case 'ë': sb.append("ë");break;
case 'Ë': sb.append("Ë");break;
case 'ï': sb.append("ï");break;
case 'Ã�': sb.append("Ï");break;
case 'ô': sb.append("ô");break;
case 'Ô': sb.append("Ô");break;
case 'ö': sb.append("ö");break;
case 'Ö': sb.append("Ö");break;
case 'ø': sb.append("ø");break;
case 'Ø': sb.append("Ø");break;
case 'ß': sb.append("ß");break;
case 'ù': sb.append("ù");break;
case 'Ù': sb.append("Ù");break;
case 'û': sb.append("û");break;
case 'Û': sb.append("Û");break;
case 'ü': sb.append("ü");break;
case 'Ãœ': sb.append("Ü");break;
case '®': sb.append("®");break;
case '©': sb.append("©");break;
case '€': sb.append("€"); break;
// be carefull with this one (non-breaking whitee space)
case ' ': sb.append(" ");break;
default: sb.append(c); break;
}
}
return sb.toString();
}
*/
}//
更新
正如注释中所建议的,我将excludesfile name属性更改为srcdir的相对路径,就是这样!所以被剪断的部分看起来像:
<javac srcdir="${utilitiesSrc}" destdir="${dest}">
<excludesfile name="HTMLParser.java" />
</javac>
# 1 楼答案
尝试将
exclude
指定为相对于javac srcdir
(=${utilitiesSrc}
)目录的路径例如,最后一个javac任务是:
如果文件埋在
${utilitiesSrc}
目录下的子目录中,则可以将其与wildcard匹配:# 2 楼答案
很明显,我想您已经检查过了,您正在编译的任何东西在HTMLParser中都没有依赖项。如果是这种情况,javac命令将编译该文件
为了澄清,上面的问题是使用带有exclude属性的绝对路径。当给定srcdir时,ant会创建一个包含排除文件名的隐式路径