This project provides Java bindings for libddwaf through JNI. Currently supported runtimes are Linux (GNU and musl), Windows amd64 and macOS x86_64 and arm64.
The project has 3 components:
- libddwaf, the core WAF library.
- libsqreen_jni, the JNI bindings.
- libsqreen.jar, the Java component, which embeds libddwaf and JNI bindings builds for all supported platforms.
- cmake 3.15 or later
- JDK 8 or later
Just run:
./gradlew checkThis will build debug versions of libddwaf, the JNI bindings, the final jar, and run tests and other checks
If you want to test as closely as possible to a release, you have to place
all built binaries in the native_libs directory. Then you can run:
./gradlew check -PuseReleaseBinariesThis will skip the build of the native libraries and use the ones it finds in
native_libs. For more on the release build process, you can go ahead and check
the GitHub Actions workflow file at .github/workflows/actions.yml.
If you need to build the JNI bindings against a custom build of libddwaf, you can use
the libddwafDir property to specify the path to the libddwaf build directory:
./gradlew buildNativeLibDebug -PlibddwafDir=/path/to/dir/of/libddwaf-config-debug.cmakeThis will avoid building libddwaf and use the one found in the specified directory.
You can run tests with ASAN with the withASAN property:
./gradlew check -PwithASANTo deploy the current bindings to your local Maven repository, use the following command:
./gradlew publishToMavenLocal -PforceLocalThis will publish the artifact with the -SNAPSHOT suffix, allowing for convenient local testing.