This repository is intended for OpenFeature contributions which are not included in the OpenFeature SDK.
The project includes:
This repo uses Release Please to release packages. Release Please sets up a running PR that tracks all changes for the library components, and maintains the versions according to conventional commits, generated when PRs are merged. When Release Please's running PR is merged, any changed artifacts are published.
Though we target Java 8, Java 18 is recommended for the tooling, plugins, etc. Maven 3.8+ is recommended.
Run mvn verify
to test, generate javadoc, and check style. If this passes locally, the CI will generally pass.
- Create a standard directory structure in the appropriate folder (
hooks/
,providers/
). - Create a new
pom.xml
in the root of your new module. It must inherit from the parent POM, which implements the javadoc, testing, publishing, and other boilerplate. Be sure to add<!--x-release-please-version -->
on the line specifying the module version, so our release tooling can update it (see sample pom below). - Add the new package to
release-please-config.json
. - Add the new module to the ... section in the parent
pom.xml
.
Sample pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openfeature.contrib</groupId>
<artifactId>parent</artifactId>
<version><!-- current parent pom version --></version>
<relativePath>../../pom.xml</relativePath>
</parent>
<groupId>dev.openfeature.contrib.${providers | hooks | etc}</groupId>
<artifactId>module</artifactId>
<version>0.0.1</version> <!--x-release-please-version -->
<name>module</name>
<description>Your module description</description>
<url>https://openfeature.dev</url>
<developers>
<developer>
<id>Your GitHub ID</id>
<name>Your Name</name>
<organization>OpenFeature</organization>
<url>https://openfeature.dev/</url>
</developer>
</developers>
<dependencies>
<!-- dependencies your module needs (in addition to those inherited from parent) -->
</dependencies>
<build>
<plugins>
<!-- plugins your module needs (in addition to those inherited from parent) -->
</plugins>
</build>
</project>
To use vscode, install the standard Java language support extension by Red Hat.
The following vscode settings are recommended (create a workspace settings file at .vscode/settings.json):
{
"java.configuration.updateBuildConfiguration": "interactive",
"java.autobuild.enabled": false,
"java.checkstyle.configuration": "${workspaceFolder}/checkstyle.xml",
"java.checkstyle.version": "10.3.2",
"java.format.settings.url": "${workspaceFolder}/eclipse-java-google-style.xml",
"java.format.enabled": false
}
Apache 2.0 - See LICENSE for more information.