diff --git a/.evergreen/run-graalvm-native-image-app.sh b/.evergreen/run-graalvm-native-image-app.sh index 130b0ef7b4e..ba24ef764a8 100755 --- a/.evergreen/run-graalvm-native-image-app.sh +++ b/.evergreen/run-graalvm-native-image-app.sh @@ -22,4 +22,4 @@ echo "The Gradle version is" ./gradlew --version echo "Building and running the GraalVM native image app" -./gradlew -PjavaVersion=${JAVA_VERSION} -Dorg.mongodb.test.uri=${MONGODB_URI} :graalvm-native-image-app:nativeRun +./gradlew -PincludeGraalvm -PjavaVersion=${JAVA_VERSION} -Dorg.mongodb.test.uri=${MONGODB_URI} :graalvm-native-image-app:nativeRun diff --git a/graalvm-native-image-app/build.gradle b/graalvm-native-image-app/build.gradle index 713b8c29a1a..b3d7335f9d9 100644 --- a/graalvm-native-image-app/build.gradle +++ b/graalvm-native-image-app/build.gradle @@ -14,6 +14,8 @@ * limitations under the License. */ +// Note requires a Gradle project flag `-PincludeGraalvm` (see settings.gradle). + plugins { id 'application' id 'org.graalvm.buildtools.native' version '0.9.23' diff --git a/graalvm-native-image-app/readme.md b/graalvm-native-image-app/readme.md index a659b7d1c07..c47a9829851 100644 --- a/graalvm-native-image-app/readme.md +++ b/graalvm-native-image-app/readme.md @@ -47,12 +47,12 @@ you need to inform Gradle about that location as specified in https://docs.gradl Assuming that your MongoDB deployment is accessible at `mongodb://localhost:27017`, run from the driver project root directory: -| # | Command | Description | -|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------| -| 0 | `env JAVA_HOME="${JDK17}" ./gradlew -PjavaVersion=21 :graalvm-native-image-app:nativeCompile` | Build the application relying on the reachability metadata stored in `graalvm-native-image-app/src/main/resources/META-INF/native-image`. | -| 1 | `env JAVA_HOME="${JDK17}" ./gradlew clean && env JAVA_HOME=${JDK21_GRAALVM} ./gradlew -PjavaVersion=21 -Pagent :graalvm-native-image-app:run && env JAVA_HOME=${JDK21_GRAALVM} ./gradlew :graalvm-native-image-app:metadataCopy` | Collect the reachability metadata and update the files storing it. Do this before building the application only if building fails otherwise. | -| 2 | `./graalvm-native-image-app/build/native/nativeCompile/NativeImageApp` | Run the application that has been built. | -| 3 | `env JAVA_HOME="${JDK17}" ./gradlew -PjavaVersion=21 :graalvm-native-image-app:nativeRun` | Run the application using Gradle, build it if necessary relying on the stored reachability metadata. | +| # | Command | Description | +|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------| +| 0 | `env JAVA_HOME="${JDK17}" ./gradlew -PincludeGraalvm -PjavaVersion=21 :graalvm-native-image-app:nativeCompile` | Build the application relying on the reachability metadata stored in `graalvm-native-image-app/src/main/resources/META-INF/native-image`. | +| 1 | `env JAVA_HOME="${JDK17}" ./gradlew clean && env JAVA_HOME=${JDK21_GRAALVM} ./gradlew -PincludeGraalvm -PjavaVersion=21 -Pagent :graalvm-native-image-app:run && env JAVA_HOME=${JDK21_GRAALVM} ./gradlew -PincludeGraalvm :graalvm-native-image-app:metadataCopy` | Collect the reachability metadata and update the files storing it. Do this before building the application only if building fails otherwise. | +| 2 | `./graalvm-native-image-app/build/native/nativeCompile/NativeImageApp` | Run the application that has been built. | +| 3 | `env JAVA_HOME="${JDK17}" ./gradlew -PincludeGraalvm -PjavaVersion=21 :graalvm-native-image-app:nativeRun` | Run the application using Gradle, build it if necessary relying on the stored reachability metadata. | #### Specifying a custom connection string diff --git a/gradle/javaToolchain.gradle b/gradle/javaToolchain.gradle index 187b143eea6..f1c779dab33 100644 --- a/gradle/javaToolchain.gradle +++ b/gradle/javaToolchain.gradle @@ -80,7 +80,7 @@ allprojects { options.encoding = "UTF-8" options.release.set(17) } - } else if (project == project(':graalvm-native-image-app')) { + } else if (project.name == 'graalvm-native-image-app') { tasks.withType(JavaCompile) { options.encoding = 'UTF-8' options.release.set(DEFAULT_JDK_VERSION) diff --git a/gradle/javadoc.gradle b/gradle/javadoc.gradle index 8d425b693b8..b986747c647 100644 --- a/gradle/javadoc.gradle +++ b/gradle/javadoc.gradle @@ -17,8 +17,9 @@ import static org.gradle.util.CollectionUtils.single */ -def projectsThatDoNotPublishJavaDocs = project(":util").allprojects + project(":driver-benchmarks") + project("driver-workload-executor") + project("driver-lambda") + project(":graalvm-native-image-app") -def javaMainProjects = subprojects - projectsThatDoNotPublishJavaDocs +def projectNamesThatDoNotPublishJavaDocs =["driver-benchmarks", "driver-lambda", "driver-workload-executor", "graalvm-native-image-app", "util", + "spock", "taglets"] +def javaMainProjects = subprojects.findAll { !projectNamesThatDoNotPublishJavaDocs.contains(it.name) } task docs { dependsOn javaMainProjects.collect { it.tasks.withType(Javadoc) + it.tasks.withType(ScalaDoc) } diff --git a/gradle/publish.gradle b/gradle/publish.gradle index f72773c5ad7..9add25f9261 100644 --- a/gradle/publish.gradle +++ b/gradle/publish.gradle @@ -72,8 +72,10 @@ ext { } } -def projectsNotPublishedToMaven = project(":util").allprojects + project(":driver-benchmarks") + project("driver-workload-executor") + project("driver-lambda") + project(":graalvm-native-image-app") -def publishedProjects = subprojects - projectsNotPublishedToMaven + +def projectNamesNotToBePublished = ["driver-benchmarks", "driver-lambda", "driver-workload-executor", "graalvm-native-image-app", "util", + "spock", "taglets"] +def publishedProjects = subprojects.findAll { !projectNamesNotToBePublished.contains(it.name) } def scalaProjects = publishedProjects.findAll { it.name.contains('scala') } def javaProjects = publishedProjects - scalaProjects def projectsWithManifest = publishedProjects.findAll {it.name != 'driver-legacy' } diff --git a/settings.gradle b/settings.gradle index b1c5e185d37..4ebbb10c4e0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -32,4 +32,7 @@ include ':driver-scala' include ':mongodb-crypt' include 'util:spock' include 'util:taglets' -include ':graalvm-native-image-app' + +if(hasProperty("includeGraalvm")) { + include ':graalvm-native-image-app' +}