我希望做一些有趣的事情,我认为这是一个好词。我想知道是否有办法使用javac任务捕获与构建中的堆栈跟踪关联的文本(目前我使用ANT构建)。
有点历史,我正在使用CI服务器,CruiseControl,并且想要编写一个能够从失败的构建中捕获堆栈跟踪的适配器,并允许我解析哪些文件导致构建从javac失败任务电话。因此,例如,如果将代码检入到具有来自其他类的方法签名的存储库中,但该类从未添加到存储库中,那么javac任务将失败,并且在类中找不到符号异常。我希望能够读取堆栈跟踪以获取导致构建失败的类。
关于如何做到这一点的任何想法?我宁愿不要只是阅读日志文件并手动解析(我觉得应该有更好的方法)但如果没有那么我也可以去那条路。
答案 0 :(得分:0)
首先,对于术语:编译器通常不会抛出异常(如果是这样,编译器中可能存在错误,或者您的文件系统出现问题,或类似的东西),因此没有堆栈跟踪。< / p>
编译时看到的是编译器输出,包括任何编译器错误消息。
查看ant的javac
任务,似乎无法将输出重定向到某处,这意味着只有通过解析整个ant运行的输出才能解析它。
使用Compiler API(javax.tools)并将DiagnosticListener添加到编译器运行中可能会做得更好。但是你必须自己将它包装成一个ant任务。