问题标签 [animal-sniffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 有人让动物嗅探器插件工作吗?
maven-animal-sniffer 插件承诺告诉我我的代码是否引用了 Java 1.6(或更新的)API。这对于我们这些在 MacOSX Snow Leopard(只有官方 1.6)上开发但需要交付到 1.5 环境的人来说很重要。
可悲的是,在尝试使用它时,我将所有 Java API 调用都报告为违规。
我不是唯一遇到这个问题的人,但显然很多其他人都成功了。
如果有人为此目的提供了一个有效的 POM 片段,那将是一个非常有用的答案。
请注意,我正在尝试使用在中央 (1.4) 上发布的版本,而不是在 org.jvnet 上发布的版本 (1.2)。
java - 用于检查源是否依赖于特定 Java 版本的工具
是否有一种快速的方法(例如工具)可以从源代码(甚至可能从编译的类)检测应用程序的哪些部分调用仅在特定 Java 版本中实现的 Java API 方法?(例如,我的应用程序的哪些部分是特定于 Java6 的)
我不一定要跳过所有ClassMismatchErrors并避免试错法。假设我只想记录应用程序的哪些部分如果是为 Java6 编写的则不能工作,并且我想在版本 5 的 JDK 中运行它。
有这样的事情吗?谷歌这次没有帮助,我也没有在这里找到任何解决方案(确实很少见:)
maven - Animal-sniffer maven 插件:如何将签名转换为签名神器?
我正在尝试动物嗅探器。
我已经创建了.signature
文件。但是要运行check
,我需要一个“签名工件”。
这是针对 JDK 的。我的项目模块需要一个。
没有它,插件会抱怨:
我应该如何创建它?
子问题:我可以为项目的所有模块汇总文件吗?
java - Animal Sniffer Maven 插件无法检测到泛型添加
Maven Animal Sniffer 插件非常适合检测 Java API 签名更改,除非更改只是添加了泛型类型。例如,在 Java 6 中你有JList
,但在 Java 7 中你有JList<E>
. 如果我使用泛型类型参数,它不会与 JDK 6 一起编译,但 Animal Sniffer 不会检测到这一点。如果我在我的开发环境中使用 JDK 7 进行编译,我不会意识到我已经破坏了构建,直到我提交代码并且使用 JDK 6 的人尝试构建它。
应该无法通过嗅探的示例 Java 代码和我的 Maven 配置的相关部分如下。帮助我避免这场悲剧。:) 有什么我可以改变的,这样 Animal Sniffer 会按预期失败构建吗?
Example.java
Maven 构建配置
java - 使用 maven 动物嗅探器插件检查自己的 API
我想使用动物嗅探器根据我自己的 API 检查一个类,它只包含一个类和一个方法:
以下简单的 POM 用于构建项目:
构建运行良好,它将 TestAPI-0.0.1-SNAPSHOT.signature 和 jar 安装到我的 maven 存储库中。
接下来我想将 TestAPI 添加为依赖项并使用testMethod
来自另一个项目的。
在这个项目中,我添加了另一个目标的动物嗅探器插件:
这个构建当然也成功运行。现在我将其更改testMethod
为具有两个参数:
并从第二个项目中使用它:
这次我预计第二个项目的构建会失败,因为签名已经改变。它不同于保存在签名文件中的那个。但是构建成功,并且animal-sniffer-plugin仅输出以下两行:
即使我调用了 API 中未定义的内容,构建也会成功(调用mvn test
),例如:
我有错误的用例还是因为 POM 配置错误?
maven - 如何仅使用 animal-sniffer-maven-plugin 检查某些类或包?
通过以下配置,如何确保检查有限类和包的签名?
maven - Maven 插件签名检查错误
我使用以下库作为依赖项:
执行时mvn clean install
,它失败并产生以下错误:
关于为什么这个错误以及如何解决它的任何想法?谢谢
这是错误的整个输出mvn clean install
:
java - Animal Sniffer - Java 1.8 签名如何有用?
当构建以Java 1.8为目标时,我不明白Animal Sniffer如何有用,考虑到:
- 如果你用javac 1.8编译的话就完美匹配了,所以我认为应该没有问题;
- 如果您使用javac >1.8,您可以指定新
--release
选项,因此,使用--release 8
,检查由编译器本身执行。
提前感谢您的任何澄清。