Ant排除敏感类文件的最佳方法
经过几次尝试,我发现如果代码中提到了该类,javac会忽略排除列表,如果可以找到它仍然编译该类而不是抛出错误。
我宁愿抛出一个错误,而不是用我的敏感类编译。
我还注意到条件编译被忽略了,所以如果代码像
static final boolean DEBUG = false;
//interface which TestSensitive & NormalClass implement
ITestWrapper testWrapper = null;
if(DEBUG){
testWrapper = new TestSensitive();
}else{
testWrapper = new NormalClass();
}
testWrapper.print_Msg();
在 javac 的 build.xml 中
<src path="${source.absolute.dir}" />
<exclude name="**/Test*.java" />
<src path="${gen.absolute.dir}" />
即使条件编译应忽略对 testWrapper = new TestSensitive() 的调用,TestSensitive 仍在编译。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21
http://www.javapractices.com/topic/TopicAction.do?Id=64
目前,我认为可以实现我想要的唯一方法是复制 TestSensitive 类并复制到一个虚拟的空心 TestSensitive 类中。有没有更好的方法来做到这一点。