๐ In January 2023, this library has moved to gapic-generator-java/api-common-java. This repository will be archived in the future. Future releases will appear in the new repository (https://github.com/googleapis/gapic-generator-java/releases). The Maven artifact coordinates (com.google.api:api-common) remain the same.
API Common for Java is a library for foundational types relating to Google APIs. It currently contains the following packages:
- core: Core library containing API stability annotations and wrappers around Guava types
- pathtemplate: Path Template library for manipulating strings that are formatted as Google API resource names.
- resourcenames: Resource Name library used by generated resource name types
For new and existing Developers/ Contributors:
In December 2022, api-common-java's build tool has been migrated from gradle to maven. Gradle related files are no longer being maintained and will be removed.
The artifact coordinates in Maven Central (
{{ group_id }}:{{ artifact_id }}
) remain the same.
Java 8 or above is required for using this library.
To build this project, JDK 11 or above is required. The build produces Java bytecode targeted for Java 8.
The project uses Maven to build.
Contributions to this library are always welcome and highly encouraged.
See the CONTRIBUTING documentation for more information on how to get started.
This library follows Semantic Versioning, but with some additional qualifications:
- Components marked with
@BetaApi
are considered to be "0.x" features inside a "1.x" library. This means they can change between minor and patch releases in incompatible ways. These features should not be used by any library "B" that itself has consumers, unless the components of library B that use@BetaApi
features are also marked with@BetaApi
. Features marked as@BetaApi
are on a path to eventually become "1.x" features with the marker removed. - Components marked with
@InternalApi
are technically public, but are only public for technical reasons, because of the limitations of Java's access modifiers. For the purposes of semver, they should be considered private.
This library is currently in major version one (1.y.z
), which means that
any public API not specifically marked as @BetaApi
or @InternalApi
can be considered
stable. They will not change without incrementing the major version to 2.x or later,
and probably not then.
BSD 3-Clause - See LICENSE for more information.
To build this library, please do the following.
mvn clean install
After making changes, run the following commands to format your code and test your changes.
mvn fmt:format
mvn test