Ant:从-Xlint检查中排除生成的源

  • 本文关键字:排除 -Xlint Ant java ant lint
  • 更新时间 :
  • 英文 :


我们在项目中使用-Xlint:all-Werror。我们有一个基于ANTLR2的解析器,从ANTLR2生成的代码不太好,会引发很多lint警告。因此,我们需要对生成的源禁用lint检查。

问题是,生成的源依赖于我们的源(例如,ANTRL允许使用自定义AST节点(,而我们的源当然依赖于ANTLR源(即,我们使用生成的解析器(。

是否可以从lint检查中排除源代码,但仍然将其编译在一起?

(请参阅稍微相关的Maven 3:如何从Xlint检查中排除生成的源?(

好的,我找到了一个解决方案。

target name="compile" depends="antlr">
<mkdir dir="build/classes"/>
<!-- compile antlr generated sources -->
<!-- compiles also necessary sources from sourcepath -->
<javac srcdir="build/antlr" destdir="build/classes" sourcepath="src" classpath="ext/antlr.jar>
</javac>
<!-- compile sources -->
<!-- already prebuilt antlr classes are present -->
<javac srcdir="src" destdir="build/classes" classpath="ext/antlr.jar">
<compilerarg value="-Xlint:all"/>
<compilerarg value="-Werror"/>
<!-- needed to recompile already compiled sources with lint enabled -->
<compilerarg value="-Xprefer:source"/>
</javac>
</target>

第一个javac只编译antlr生成的源和antlr产生的代码所依赖的所有必要的源。第二个javac使用-Xlint:all-Werror编译所有未生成的源,并重用antlr生成代码中的预构建类。注意-Xprefer:source,它强制javac重新编译所有未生成的源,即使第一步中已经有相应的.class文件。

相关内容

  • 没有找到相关文章

最新更新