Skip to main content
Version: v0.6

Sdk installation

Maven repositories

The Kiwa Sdk is distributed through Sphereon's Nexus repository. Nexus is available at https://nexus.sphereon.com and hosts both the Kiwa Sdk and the Open-Source Identity Development Kit.

All Open-Source software can be found in the following Maven repositories:

info

Snapshot versions are not guaranteed to be stable as they are built from the latest code.

Kiwa SDK repositories need an account

Although Kiwa customers get source code access to the Kiwa SDK, the Kiwa SDK itself is not open source and thus is not available in the above Maven repositories. The Kiwa SDK is available through the Sphereon Nexus repositories below

Groups Ids and artifacts

The Kiwa SDK is using the following group Id for its artifacts:

  • com.sphereon.kiwa

The SDK artifacts are:

  • com.sphereon.kiwa:kiwa-holder-sdk-public: The API's, interfaces and common code. All code depends on the interfaces defined in this package.
  • com.sphereon.kiwa:kiwa-holder-sdk-impl: The implementation of the API's. This code is being injected as actual implementation of the interfaces. The artifact depends and exports the public API's.
  • com.sphereon.kiwa:kiwa-holder-sdk-all: Provides pre-build Dependency components and depends on the public and implementation artifacts.

Setting up authentication

To access the Kiwa SDK repositories, you need to obtain Nexus credentials from Sphereon. Contact Sphereon to receive your username and password for accessing the kiwa-releases and kiwa-snapshots repositories.

Maven authentication

For Maven, add your Nexus credentials to your ~/.m2/settings.xml file:

<settings>
<servers>
<server>
<id>kiwa-releases</id>
<username>YOUR_NEXUS_USERNAME</username>
<password>YOUR_NEXUS_PASSWORD</password>
</server>
<server>
<id>kiwa-snapshots</id>
<username>YOUR_NEXUS_USERNAME</username>
<password>YOUR_NEXUS_PASSWORD</password>
</server>
</servers>
</settings>

Gradle authentication

For Gradle, add your Nexus credentials to your ~/.gradle/gradle.properties file:

nexusUsername=YOUR_NEXUS_USERNAME
nexusPassword=YOUR_NEXUS_PASSWORD

Using dependencies in your project

Maven configuration

Add the Kiwa repositories and dependencies to your pom.xml:

<project>
<repositories>
<repository>
<id>kiwa-releases</id>
<url>https://nexus.sphereon.com/content/repositories/kiwa-releases/</url>
</repository>
<repository>
<id>kiwa-snapshots</id>
<url>https://nexus.sphereon.com/content/repositories/kiwa-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

<dependencies>
<!-- Use the all-in-one dependency for the complete SDK with components -->
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-all</artifactId>
<version>0.6.0</version>
</dependency>

<!-- Or use the SDK implementation without components -->
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-impl</artifactId>
<version>0.6.0</version>
</dependency>
</dependencies>
</project>

Gradle configuration

Add the Kiwa repositories and dependencies to your build.gradle:

repositories {
maven {
url 'https://nexus.sphereon.com/content/repositories/kiwa-releases/'
credentials {
username = project.findProperty('nexusUsername') ?: System.getenv('NEXUS_USERNAME')
password = project.findProperty('nexusPassword') ?: System.getenv('NEXUS_PASSWORD')
}
}
maven {
url 'https://nexus.sphereon.com/content/repositories/kiwa-snapshots/'
credentials {
username = project.findProperty('nexusUsername') ?: System.getenv('NEXUS_USERNAME')
password = project.findProperty('nexusPassword') ?: System.getenv('NEXUS_PASSWORD')
}
}
}

dependencies {
// Use the all-in-one dependency for the complete SDK
implementation 'com.sphereon.kiwa:kiwa-holder-sdk-all:0.6.0'

// Or use individual dependencies
implementation 'com.sphereon.kiwa:kiwa-holder-sdk-public:0.6.0'
implementation 'com.sphereon.kiwa:kiwa-holder-sdk-impl:0.6.0'
}

For Gradle Kotlin DSL (build.gradle.kts):

repositories {
maven {
url = uri("https://nexus.sphereon.com/content/repositories/kiwa-releases/")
credentials {
username = project.findProperty("nexusUsername") as String? ?: System.getenv("NEXUS_USERNAME")
password = project.findProperty("nexusPassword") as String? ?: System.getenv("NEXUS_PASSWORD")
}
}
maven {
url = uri("https://nexus.sphereon.com/content/repositories/kiwa-snapshots/")
credentials {
username = project.findProperty("nexusUsername") as String? ?: System.getenv("NEXUS_USERNAME")
password = project.findProperty("nexusPassword") as String? ?: System.getenv("NEXUS_PASSWORD")
}
}
}

dependencies {
// Use the all-in-one dependency for the complete SDK
implementation("com.sphereon.kiwa:kiwa-holder-sdk-all:0.6.0")

// Or use individual dependencies
implementation("com.sphereon.kiwa:kiwa-holder-sdk-public:0.6.0")
implementation("com.sphereon.kiwa:kiwa-holder-sdk-impl:0.6.0")
}
tip

Replace 0.6.0 with the desired version of the Kiwa SDK. For snapshot versions, use a version like 0.6.0-SNAPSHOT.

Using local binaries

If you prefer to download the binaries manually or cannot access the Nexus repository directly, you can use local file dependencies.

Obtaining binaries manually

  1. Contact Sphereon to receive the JAR files for the Kiwa SDK artifacts
  2. Alternatively, if you have Nexus access, download the binaries directly from the next URLs or from the Nexus UI:
  3. Save the JAR files to a local directory in your project (e.g., libs/ folder)

Maven local file dependencies

Add local file dependencies to your pom.xml:

<dependencies>
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-all</artifactId>
<version>0.6.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kiwa-holder-sdk-all-0.6.0.jar</systemPath>
</dependency>

<!-- Or use individual dependencies -->
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-public</artifactId>
<version>0.6.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kiwa-holder-sdk-public-0.6.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.sphereon.kiwa</groupId>
<artifactId>kiwa-holder-sdk-impl</artifactId>
<version>0.6.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/kiwa-holder-sdk-impl-0.6.0.jar</systemPath>
</dependency>
</dependencies>

Gradle local file dependencies

Add local file dependencies to your build.gradle:

dependencies {
// Use the all-in-one dependency for the complete SDK
implementation files('libs/kiwa-holder-sdk-all-0.6.0.jar')

// Or use individual dependencies
implementation files('libs/kiwa-holder-sdk-public-0.6.0.jar')
implementation files('libs/kiwa-holder-sdk-impl-0.6.0.jar')
}

For Gradle Kotlin DSL (build.gradle.kts):

dependencies {
// Use the all-in-one dependency for the complete SDK
implementation(files("libs/kiwa-holder-sdk-all-0.6.0.jar"))

// Or use individual dependencies
implementation(files("libs/kiwa-holder-sdk-public-0.6.0.jar"))
implementation(files("libs/kiwa-holder-sdk-impl-0.6.0.jar"))
}

Alternatively, you can include all JARs from a directory:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}

Or in Kotlin DSL:

dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
}
warning

When using system scope dependencies in Maven or local file dependencies, ensure that the JAR files are committed to version control or documented clearly so other developers can obtain them.