{"id":13800784,"url":"https://github.com/couchbase/couchbase-jvm-clients","last_synced_at":"2025-05-15T12:05:53.040Z","repository":{"id":40763050,"uuid":"151122650","full_name":"couchbase/couchbase-jvm-clients","owner":"couchbase","description":"The Couchbase Monorepo for JVM Clients: Java, Scala, io-core…","archived":false,"fork":false,"pushed_at":"2025-05-12T09:28:50.000Z","size":19310,"stargazers_count":49,"open_issues_count":1,"forks_count":41,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-12T10:43:24.713Z","etag":null,"topics":["couchbase","java","jvm","kotlin","scala","sdk"],"latest_commit_sha":null,"homepage":"https://couchbase.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/couchbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-01T16:44:58.000Z","updated_at":"2025-05-12T09:28:54.000Z","dependencies_parsed_at":"2023-09-26T02:19:32.446Z","dependency_job_id":"99b0ea71-4cdf-4dd1-80d3-17280542716e","html_url":"https://github.com/couchbase/couchbase-jvm-clients","commit_stats":{"total_commits":2910,"total_committers":26,"mean_commits":"111.92307692307692","dds":0.6529209621993127,"last_synced_commit":"280a07ef7f835dcead3c92d1c6921e14473f31cb"},"previous_names":[],"tags_count":534,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-jvm-clients","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-jvm-clients/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-jvm-clients/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-jvm-clients/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/couchbase","download_url":"https://codeload.github.com/couchbase/couchbase-jvm-clients/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337613,"owners_count":22054253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["couchbase","java","jvm","kotlin","scala","sdk"],"created_at":"2024-08-04T00:01:16.240Z","updated_at":"2025-05-15T12:05:48.022Z","avatar_url":"https://github.com/couchbase.png","language":"Java","funding_links":[],"categories":["Table of Contents"],"sub_categories":["Database"],"readme":"[**Issues**](https://issues.couchbase.com)\n| [**Forums**](https://forums.couchbase.com)\n| [**Discord**](https://discord.com/invite/sQ5qbPZuTh)\n| [**Documentation**](https://docs.couchbase.com/home/sdk.html)\n\n# Couchbase JVM Clients\n\n[![license](https://img.shields.io/github/license/couchbase/couchbase-jvm-clients?color=brightgreen)](https://opensource.org/licenses/Apache-2.0)\n\n[![java-client](https://img.shields.io/maven-central/v/com.couchbase.client/java-client?color=brightgreen\u0026label=java-client)](https://search.maven.org/artifact/com.couchbase.client/java-client)\n[![scala-client](https://img.shields.io/maven-central/v/com.couchbase.client/scala-client_2.12?color=brightgreen\u0026label=scala-client)](https://search.maven.org/artifact/com.couchbase.client/scala-client_2.12)\n[![kotlin-client](https://img.shields.io/maven-central/v/com.couchbase.client/kotlin-client?color=brightgreen\u0026label=kotlin-client)](https://search.maven.org/artifact/com.couchbase.client/kotlin-client)\n\nThis repository contains the third generation of the Couchbase SDKs on the JVM (\"SDK 3\").\n\n## Overview\n\nThis repository contains the following projects:\n\n - `core-io`: the foundational library for all language bindings\n - `java-client`: the Java language binding\n - `scala-client`: the Scala language binding\n - `kotlin-client`: the Kotlin language binding\n - `tracing-micrometer-observation`: module to integrate with [Micrometer Observation](https://micrometer.io/docs/observation)\n - `tracing-opentracing`: module to integrate with [OpenTracing](https://opentracing.io/)\n - `tracing-opentelemetry`: module to integrate with [OpenTelemetry](https://opentelemetry.io/) tracing\n - `metrics-opentelemetry`: module to integrate with [OpenTelemetry](https://opentelemetry.io/) metrics\n - `metrics-micrometer`: module to integrate with [Micrometer](https://micrometer.io/) metrics\n - `java-fit-performer`: for internal testing of the java-client transactions implementation\n\nOther toplevel modules might be present which contain examples, experimental code or internal tooling and test infrastructure.\n\nDocumentation is available for [Java](https://docs.couchbase.com/java-sdk/current/hello-world/start-using-sdk.html), \n[Scala](https://docs.couchbase.com/scala-sdk/current/start-using-sdk.html)\nand [Kotlin](https://docs.couchbase.com/kotlin-sdk/current/hello-world/overview.html).  \nThese include getting started guides.\n\n## Building\nStable releases are published on [maven central](https://search.maven.org/search?q=com.couchbase.client).\n\nYou can always also just build it from source, using any JDK 17+:\n\n```\n$ git clone https://github.com/couchbase/couchbase-jvm-clients.git\n$ cd couchbase-jvm-clients\n$ make\n```\n\nYes, we need `make` because maven doesn't support the setup we need and neither does gradle. If you\nwant to build for different Scala versions, after the first `make` you can do this through:\n\n```sh\n$ ./mvnw -D\"scala.compat.version=2.13\" -D\"scala.compat.library.version=2.13.13\" clean install\n```\n\nNotes:\n+ Couchbase provides, tests and supports builds for Scala 2.12 and 2.13.\n+ Default `scala.compat.`X properties are defined in file [.mvn/maven.config]\n+ You can always go into one of the sub-directories like `core-io` to only build or test an\nindividual project:\n    ```shell script\n    cd scala-client\n    ../mvnw -DskipTests clean install\n    ```\n+ Use `-DskipTests` to skip testing.\n\n### Testing\n\nYou can test like this:\n\n```shell script\n$ ./mvnw clean test -fae\n```\n\n#### Testing with FIT\n(This section is for internal consumption for Couchbase developers.)\n\nIncreasingly the SDK is tested internally with Couchbase's FIT suite.  \nEach SDK has its own FIT 'performer' - java-fit-performer, scala-fit-performer and kotlin-fit-performer.\nThey are not included in the build by default as they require a) JDK 17 and b) the fit-grpc library (built separately).\n\nTo use a performer, uncomment the lines in the top-level pom.xml after 'Uncomment next lines to include the FIT performers', and reload the Maven config.\nThen run one of the performers in an IDE.\n\n### Branches \u0026 Release Trains\n\nSince this monorepo houses different versions of different artifacts, release train names have been chosen\nto identify a collection of releases that belong to the same train.\n\nThese trains are named after historic computers for your delight.\n\nTags in each branch are named `branchname-ga` for the initial GA release, and then subsequently `branchname-sr-n` for\neach service release. See the tag information for specifics of what's in there.\n\n - [Titan](https://en.wikipedia.org/wiki/Titan_(supercomputer))\n - [Frontier](https://en.wikipedia.org/wiki/Frontier_(supercomputer))\n - [Eos](https://nvidianews.nvidia.com/news/nvidia-announces-dgx-h100-systems-worlds-most-advanced-enterprise-ai-infrastructure) (Initial Release 2022-03-26)\n - [Hopper](https://en.wikipedia.org/wiki/Grace_Hopper) (Initial Release 2021-07-20)\n - [Pegasus](https://en.wikipedia.org/wiki/Ferranti_Pegasus) (Initial Release 2020-12-02)\n - [Colossus](https://en.wikipedia.org/wiki/Colossus_computer) (Initial Release 2020-01-10)\n\n| Release Train | Java-Client | Scala-Client | Core-Io | Tracing-OpenTelemetry | Tracing-OpenTracing | Metrics-OpenTelemetry | Metrics-Micrometer |\n|---------------|-------------|--------------|---------|-----------------------|---------------------|-----------------------|--------------------|\n| colossus      | 3.0.x       | 1.0.x        | 2.0.x   | 0.2.x                 | 0.2.x               | -                     | -                  |\n| pegasus       | 3.1.x       | 1.1.x        | 2.1.x   | 0.3.x                 | 0.3.x               | 0.1.x                 | 0.1.x              |\n| hopper        | 3.2.x       | 1.2.x        | 2.2.x   | 1.0.x                 | 1.0.x               | 0.2.x                 | 0.2.x              |\n| eos           | 3.3.x       | 1.3.x        | 2.3.x   | 1.1.x                 | 1.2.x               | 0.3.x                 | 0.3.x              |\n| frontier      | 3.4.x       | 1.4.x        | 2.4.x   | 1.2.x                 | 1.3.x               | 0.4.x                 | 0.4.x              |\n | titan         | 3.5.x       | 1.5.x        | 2.5.x   | 1.3.x                 | 1.4.x               | 0.5.x                 | 0.5.x              |\n\n### Testing Info\n\nTo cover all tests, the suite needs to be run against the following topologies, but by default it\nruns against the mock. Recommended topologies:\n\n - 1 node, no replica\n - 2 nodes, 1 replica\n - 2 nodes, 2 replicas\n\nAlso to have maximum service coverage use a cluster which has all services enabled (can be MDS setup).\n\n### Building Documentation\nDocumentation will be built automatically by the `mvn install` command above.\n\nAccording to the Maven standard, the file is named artifact-version-javadoc.jar (i.e. java-client-3.4.5-javadoc.jar).\n\nThis file can be extracted (jars are like zip files) with the following command:\n\n```\njar xvf java-client-3.4.5-javadoc.jar\n```\n\nThis will extract the contents of the javadoc file into the current directory. After the original jar is removed it can be uploaded to s3.\n\nThe location of the javadoc files depends on where you get it from. The easiest is, once published, from Maven central.\nFor example, look it up on Maven central: https://search.maven.org/artifact/com.couchbase.client/java-client/3.4.5/jar and download the javadoc jar: https://search.maven.org/remotecontent?filepath=com/couchbase/client/java-client/3.0.4/java-client-3.4.5-javadoc.jar\n\nThe exact same approach can be used for any artifact, including Scala.\nThe Scala documentation can also be built with this command:\n```\ncd scala-client \u0026\u0026 mvn scala:doc\n```\n\n## IDE Configuration\n\n### IntelliJ\nScala code is automatically formatted on compile with the tool `scalafmt`.  To make IntelliJ use the same settings:\n\nIn Editor -\u003e Code Style -\u003e Scala:\n* Change formatter to scalafmt.\n* Click 'disable' next to the EditorConfig warning.\n* Check [Reformat on file save](https://scalameta.org/scalafmt/docs/installation.html#format-on-save).\n\n(`mvn validate` can be used from command-line to force reformat)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcouchbase%2Fcouchbase-jvm-clients","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcouchbase%2Fcouchbase-jvm-clients","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcouchbase%2Fcouchbase-jvm-clients/lists"}