Library that provides the @API
annotation that is used to annotate public types, methods, constructors, and fields within a framework or application in order to publish their status and level of stability and to indicate how they are intended to be used by consumers of the API.
The @API Guardian library is deployed to Maven Central. To avoid compile-time warnings, you need to declare it as a transitive compile-time dependency.
<dependency>
<groupId>org.apiguardian</groupId>
<artifactId>apiguardian-api</artifactId>
<version>1.1.2</version>
</dependency>
repositories {
mavenCentral()
}
dependencies {
compileOnlyApi("org.apiguardian:apiguardian-api:1.1.2")
}
Using compileOnlyApi
will include the library on the compile classpath of downstream projects but not their runtime classpath. If you want downstream projects to be able to use the @API
annotation at runtime, you should declare it as api
instead:
dependencies {
api("org.apiguardian:apiguardian-api:1.1.2")
}
module org.example {
requires static transitive org.apiguardian.api;
}
Using static
will only include the library on the module path of downstream projects at compile time but not at runtime. If you want downstream projects to be able to use the @API
annotation at runtime, you should declare it without static
instead:
module org.example {
requires transitive org.apiguardian.api;
}