Den*_*ich 8 java lint maven java-8 retrolambda
背景:
我们有maven
基于Java的项目,它以JRE 1.7为目标,但源代码使用lambdas,因此我们用它retrolambda
来转换Java 8
源代码Java 7
.当我们需要stream,function.*,Optional等时,我们也使用StreamSupport backport库.
用法retrolambda
包括将项目的源语言和目标语言级别配置为1.8.
如果对java8类或方法(比如不依赖一切工作正常java.util.stream.*
,java.util.Optional
或方法引入java8
类似Collection.forEach
).如果有这样的用法然后构建传递,但它在运行时失败,当在Java 8的JVM下运行时.
题:
我的目标是在存在此类依赖项的情况下使构建失败.有没有办法Java 8
在构建时检测新类/方法的依赖?
我想到了两个可能的选择,但我不确定它们中的任何一个是否可行:
lint4j
)规则.不确定是否可以使用检测对类/方法的依赖性lint
您可以使用Animal Sniffer Maven插件.它允许您检查您的代码是否仅使用来自指定基线的API(称为"签名").在您的情况下,您将使用org.codehaus.mojo.signature:java17:1.0签名.
正如其他人所指出的那样,您也可以设置引导类路径,但是a)需要设置JDK 7并且b)使构建更复杂,因为您需要指向JDK 7安装.根据我的经验,动物嗅探器更容易使用.