我们的项目的一部分,我们的大部分模块都是用java 1.5开发的,但其他一些模块已经转移到了java 1.6。
JAVA_HOME指向java 1.5版本,这就是ant的开始。
要使用适当版本的java编译我们的模块,我们使用javac ant task支持的fork,executable和compiler设置。
然而,当运行checkstyle任务时,看起来没有这样的“fork”等价物,并且checkstyle将始终以任何ant开头运行(在我们的例子中为java 1.5)。这会导致我们某些类的一些checkstyle错误。
[checkstyle] ... \ SomeJavaClass.java:0:有异常 - java.lang.UnsupportedClassVersionError:.class文件中的版本号错误
将JAVA_HOME更改为指向java 1.6可以在运行java 1.6模块的checkstyle任务时解决问题,但是在运行Jenkins构建时,这不是一个选项。
有关如何解决此问题的任何想法?我相信我不是第一个遇到这个问题的人,谷歌无济于事。 先感谢您。 儒略
答案 0 :(得分:0)
好问题。您可以使用 Java 或 Exec Ant任务来执行checkstyle,而不是通过checkstyle ant任务。这样,您可以在每次执行时选择JVM,甚至可以并行执行(例如,通过ant-contrib ForEach task)。 Here's如何从命令行运行checkstyle。
此外,您可以从checkstyle运行中排除.class
个文件。然后也许它会停止抱怨。 Checkstyle不需要类文件,因为它完全在Java源代码上运行。