首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven/Retrolambda:如何检测Java 8类上的依赖关系

Maven/Retrolambda:如何检测Java 8类上的依赖关系
EN

Stack Overflow用户
提问于 2016-11-03 13:42:36
回答 1查看 1K关注 0票数 8

背景:

我们有maven-based java项目,它的目标是JRE1.7,但是源代码使用lambdas,所以我们使用retrolambdaJava 8源代码转换为Java 7。此外,当我们需要流、函数.*、可选等时,我们使用StreamSupport支持端口库。

retrolambda的使用涉及将项目的源和目标语言级别配置为1.8。

如果不依赖于java8类或方法(如java.util.stream.*java.util.Optional或在java8中引入的方法(如Collection.forEach) ),一切都可以正常工作。如果有这样的使用,那么构建传递,但在运行时,当运行在Java 8的JVM下时,它会失败。

问题:

我的目标是在这种依赖关系存在的情况下使构建失败。有没有任何方法可以在构建时检测新的Java 8类/方法的依赖关系?

我考虑了两种可能的选择,但我不确定这两种选择是否可行:

  1. 某种用于检测预定义类和方法上的依赖的字节码分析器。有这样的工具/maven插件吗?
  2. 皮棉(lint4j)规则不确定是否可以使用lint检测对类/方法的依赖
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-03 21:13:05

您可以为此使用动物嗅探器Maven插件。它允许您检查代码是否只使用来自指定基线(称为“签名”)的API。在您的示例中,您将使用org.codehaus.mojo.签名:java17 17:1.0签名。

正如其他人所指出的,您也可以设置引导类路径,但是,( a)需要设置JDK 7,b)使构建更加复杂,因为您需要指向JDK 7安装。根据我的经验,使用动物嗅探器要容易得多。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40403047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档