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类中。有没有更好的方法来做到这一点。
答案 0 :(得分:2)
让我回答问题的非蚂蚁部分(无论如何,在你解决之前,你无法继续前进):
似乎你自相矛盾,你的DEBUG
是true
,所以为什么你想知道TestSensitive
?这是选择的if分支。
但是我相信对其他类的引用,你需要在类路径的编译过程中使用它们。我相信你无法阻止这种方式。
然而,有一些方法可以实现预期的行为。例如:
ITestWrapper
:
Spring
或