projectnessie / nessie

Nessie: Transactional Catalog for Data Lakes with Git-like semantics
https://projectnessie.org
Apache License 2.0
1.04k stars 129 forks source link

Let apprunner-gradle-plugin fork Nessie process #1333

Closed snazy closed 2 years ago

snazy commented 3 years ago

Currently the apprunner-gradle-plugin uses Quarkus mechanisms to resolve artifacts, setup the configuration, etc. - this reuses functionality from the apprunner-maven-plugin.

Since #1245 (new in Nessie 0.6.1), the Nessie-Server is built with Java 11.

The Iceberg-Java-8 build (naturally) fails with Nessie 0.6.1 (comment). It's not a solution to revert #1245, because Quarkus 2.0 will drop Java 8 support.

The idea is to launch the Nessie server as a separate process using the uber-jar, which is published to Maven Central since Nessie 0.6.1.

Removing all the Quarkus-bootstrap code from the plugin should also simplify the plugin code a lot and reduce the amount of dependencies.

It might be good to use the same approach in the Maven plugin as well, and continue to share the code base for both the Maven and Gradle plugins.

The new code that launches the Nessie server as a separate process just needs a bit more logic (rather configuration) to distinguish whether it shall use an "external dependency to the uber-jar" or whether it shall (or can) look for the servers/quarkus-server/target/quarkus-app/quarkus-run.jar (the non-uber variant).

laurentgo commented 3 years ago

Would that work though? Even if the process is forked, it would still require a JDK11 environment wouldn't it?

snazy commented 3 years ago

Right, but you can "just" setup one aside from the "main Java 8 one" and set an env var or use the toolchains API.