背景:
我们有maven
基于 JRE 1.7 的基于 java 项目,但源代码使用 lambdas,因此我们retrolambda
用于将Java 8
源代码转换为Java 7
. 当我们需要流、函数。*、可选等时,我们也会使用StreamSupport 反向端口库。
的使用retrolambda
涉及将项目的源语言和目标语言级别配置为 1.8。
如果对 java8 类或方法(如java.util.stream.*
、或在likejava.util.Optional
中引入的方法)没有依赖关系,则一切正常。如果有这样的用法,则构建通过,但在运行时失败,在 Java 8 的 JVM 下运行时。java8
Collection.forEach
问题:
我的目标是在存在此类依赖项的情况下使构建失败。有没有办法Java 8
在构建时检测对新类/方法的依赖关系?
我考虑了两种可能的选择,但我不确定它们是否可行:
- 某种字节码分析器,用于检测预定义类和方法的依赖关系。有这样的工具/Maven插件吗?
- Lint (
lint4j
) 规则。不确定是否可以使用来检测对类/方法的依赖lint