See https://github.com/projectnessie/nessie
The Nessie Apprunner plugins are available for Maven and Gradle. A rudimentary integration test is shown below.
import org.projectnessie.client.api.NessieApiV2;
import org.projectnessie.client.http.HttpClientBuilder;
import org.projectnessie.model.Branch;
public class ITWorksWithNessie {
static URI NESSIE_SERVER_URI =
String.format(
"%s/api/v2",
requireNonNull(
System.getProperty("quarkus.http.test-url"),
"Required system property quarkus.http.test-url is not set"));
static NessieApiV2 nessieApi;
@BeforeAll
static void setupNessieClient() {
nessieApi = HttpClientBuilder.builder()
.fromSystemProperties()
.withUri(NESSIE_SERVER_URI)
.build(NessieApiV2.class);
}
@AfterAll
static void closeNessieClient() {
nessieApiV1.close();
}
@Test
public void pingNessie() {
Branch defaultBranch = nessieApiV1.getDefaultBranch();
// do some more stuff
}
}
build.gradle.kts
plugins {
java
id("org.projectnessie") version "0.29.0"
}
dependencies {
// your dependencies
// specify the GAV of the Nessie Quarkus server runnable (uber-jar)
nessieQuarkusServer("org.projectnessie:nessie-quarkus:0.49.0:runner")
}
nessieQuarkusApp {
// Ensure that the `test` task has a Nessie Server available.
includeTask(tasks.named<Test>("test"))
// Note: prefer setting up separate `integrationTest` tasks, see https://docs.gradle.org/current/userguide/jvm_test_suite_plugin.html
// These system properties will be available in your integration tests and will contain the
// port and full URL of the Nessie Quarkus server's HTTP server.
// httpListenPortProperty.set("quarkus.http.port") // quarkus.http.port is the default
// httpListenUrlProperty.set("quarkus.http.test-url") // quarkus.http.test-url is the default
}
build.gradle
plugins {
id 'java'
id 'org.projectnessie' version "0.29.0"
}
dependencies {
// your dependencies
// specify the GAV of the Nessie Quarkus server runnable (uber-jar)
nessieQuarkusServer "org.projectnessie:nessie-quarkus:0.49.0:runner"
}
nessieQuarkusApp {
// Ensure that the `test` task has a Nessie Server available.
includeTask(tasks.named("test"))
// Note: prefer setting up separate `integrationTest` tasks, see https://docs.gradle.org/current/userguide/jvm_test_suite_plugin.html
// These system properties will be available in your integration tests and will contain the
// port and full URL of the Nessie Quarkus server's HTTP server.
// httpListenPortProperty.set("quarkus.http.port") // quarkus.http.port is the default
// httpListenUrlProperty.set("quarkus.http.test-url") // quarkus.http.test-url is the default
}
The org.projectnessie.nessie-runner:nessie-runner-maven-plugin
Maven plugin can be used together with the
standard maven-failsafe-plugin
(POM snippet)
<project>
<properties>
<nessie.version>0.49.0</nessie.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectnessie</groupId>
<artifactId>nessie-client</artifactId>
<version>${nessie.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.projectnessie.nessie-runner</groupId>
<artifactId>nessie-runner-maven-plugin</artifactId>
<version>0.29.0</version>
<configuration>
<!-- Preferred way, specify the GAV of the Nessie Quarkus server runnable (uber-jar) -->
<appArtifactId>org.projectnessie:nessie-quarkus:jar:runner:${nessie.version}</appArtifactId>
<!-- The system properties passed to the Nessie server -->
<systemProperties>
<foo>bar</foo>
</systemProperties>
<!-- The environment variables passed to the Nessie server -->
<environment>
<HELLO>world</HELLO>
</environment>
<!-- These system properties will be available in your integration tests and will contain the
port and full URL of the Nessie Quarkus server's HTTP server. -->
<!-- quarkus.http.port is the default -->
<httpListenPortProperty>quarkus.http.port</httpListenPortProperty>
<!-- quarkus.http.test-url is the default -->
<httpListenUrlProperty>quarkus.http.test-url</httpListenUrlProperty>
</configuration>
<executions>
<execution>
<!-- Start the Nessie Server before the integration tests start -->
<id>start</id>
<phase>pre-integration-test</phase>
<goals><goal>start</goal></goals>
</execution>
<execution>
<!-- Stop the Nessie Server after the integration tests finished -->
<id>stop</id>
<phase>post-integration-test</phase>
<goals><goal>stop</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
- Java 11
./mvnw clean install
(cd gradle-plugin ; ./gradlew build)