Gradle AnimalSniffer plugin
DOCUMENTATION https://xvik.github.io/gradle-animalsniffer-plugin
Use AnimalSniffer signatures to check (JDK, android SDK or any library) API compatibility
for java (kotlin, scala, groovy etc.), android and kotlin multiplatform projects.
General tool: signatures could be created for any library to check api compatibility against older library versions.
Android community adopted it for android SDK compatibility verification.
Easy way to check android SDK compatibility for java library.
NOTE: Initially, animalsniffer was created for java compatibility checks, but java signatures
for JDK 9+ are not published due to module nature: use
—release flag
to check JDK 9+ backwards compatibility
compileJava {
options.release = 11
}
Features:
@CompileStatic
), scala,Used by:
animalsniffer
- check configurationanimalsnifferSignature
- signature build configuration (optional)animalsniffer[Target]
- check “[target]” sources (source set, android variant or kotlin platform) animalsnifferSignature
- build signature (active when animalsnifferSignature
configuration declared)printAnimalsnifferTasks
- print registered check tasksprintAnimalsnifferSourceInfo
- print defailed project sources and compile tasks info (for debug reports)type:BuildSignatureTask
- custom signature build task may be used to merge signaturestype:SignatureInfoTask
- view signature “contents” signature
- signatures for check
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'ru.vyarus:gradle-animalsniffer-plugin:2.0.0'
}
}
apply plugin: 'ru.vyarus.animalsniffer'
OR
plugins {
id 'ru.vyarus.animalsniffer' version '2.0.0'
}
Plugin only works with plugins:
java-base
plugin (activated by any java-related plugin like java
, java-library
, groovy
, scala
, org.jetbrains.kotlin.jvm
, etc.).com.android.library
or com.android.application
plugins (required 7.4.0
or greater)org.jetbrains.kotlin.multiplatform
plugin (required 1.7
or greater).The plugin is compiled for Java 8 and tested for compatibility with Java 11, 17 and 21.
Gradle | Version |
---|---|
7-8 | 2.0.0 |
5 | 1.7.2 |
4.x | 1.4.6 |
settings.gradle
(top most!) (exact commit hash might be used as version) :groovy
pluginManagement {
repositories {
gradlePluginPortal()
maven {
url = 'https://maven.pkg.github.com/xvik/gradle-animalsniffer-plugin'
credentials {
username = settings.ext.find('gpr.user') ?: System.getenv("USERNAME")
password = settings.ext.find('gpr.key') ?: System.getenv("TOKEN")
}
}
}
}
In global gradle file ~/.gradle/gradle.properties
addgpr.user=<your github user name>
gpr.key=<your github password or classic token>
groovy
plugins {
id 'ru.vyarus.animalsniffer' version '2.0.1-SNAPSHOT'
}
settings.gradle
(top most!) (exact commit hash might be used as version) :groovy
pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.id == 'ru.vyarus.use-python') {
useModule('ru.vyarus:gradle-animalsniffer-plugin:master-SNAPSHOT')
}
}
}
repositories {
gradlePluginPortal()
maven { url 'https://jitpack.io' }
}
}
groovy
plugins {
id 'ru.vyarus.animalsniffer'
}
Read documentation
Check:
Signature build:
Full android and multiplatform projects (created with android studio and kotlin init site):