diff --git a/docs/src/main/asciidoc/scripting.adoc b/docs/src/main/asciidoc/scripting.adoc index c5a4a11a99a5b..a09fe783cf383 100644 --- a/docs/src/main/asciidoc/scripting.adoc +++ b/docs/src/main/asciidoc/scripting.adoc @@ -42,7 +42,6 @@ import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; -import org.jboss.logging.Logger; @Path("/hello") @ApplicationScoped @@ -136,9 +135,9 @@ $ jbang quarkusapp.java [jbang] Dependencies resolved [jbang] Building jar... [jbang] Post build with io.quarkus.launcher.JBangIntegration -Aug 30, 2020 5:40:55 AM org.jboss.threads.Version -INFO: JBoss Threads version 3.1.1.Final -Aug 30, 2020 5:40:56 AM io.quarkus.deployment.QuarkusAugmentor run +Mar 22, 2023 9:47:51 A.M. org.jboss.threads.Version +INFO: JBoss Threads version 3.5.0.Final +Mar 22, 2023 9:47:51 A.M. io.quarkus.deployment.QuarkusAugmentor run INFO: Quarkus augmentation completed in 722ms Hello World ---- @@ -148,13 +147,9 @@ For now the application does nothing new. [TIP] .How do I edit this file and get content assist? ==== -As there is nothing but a `.java` file, most IDE's don't handle content assist well. -To work around that you can run `jbang edit quarkusapp.java`, this will print out a directory that will have a temporary project setup you can use in your IDE. +To edit the JBang script in an IDE/editor with content assist you can run `jbang edit quarkusapp.java` or `jbang edit quarkusapp.java`. -On Linux/macOS you can run ` `jbang edit quarkusapp.java``. - -If you add dependencies while editing, you can get JBang to automatically refresh -the IDE project using `jbang edit --live= quarkusapp.java`. +For more information please refer to the https://www.jbang.dev/documentation/guide/latest/editing.html[the JBang documentation]. ==== @@ -204,17 +199,17 @@ $ jbang quarkusapp.java [jbang] Building jar... [jbang] Post build with io.quarkus.launcher.JBangIntegration -Aug 30, 2020 5:49:01 AM org.jboss.threads.Version -INFO: JBoss Threads version 3.1.1.Final -Aug 30, 2020 5:49:02 AM io.quarkus.deployment.QuarkusAugmentor run -INFO: Quarkus augmentation completed in 681ms +Mar 22, 2023 9:48:39 A.M. org.jboss.threads.Version +INFO: JBoss Threads version 3.5.0.Final +Mar 22, 2023 9:48:39 A.M. io.quarkus.deployment.QuarkusAugmentor run +INFO: Quarkus augmentation completed in 521ms __ ____ __ _____ ___ __ ____ ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ -2020-08-30 05:49:03,255 INFO [io.quarkus] (main) Quarkus {quarkus-version} on JVM started in 0.638s. Listening on: http://0.0.0.0:8080 -2020-08-30 05:49:03,272 INFO [io.quarkus] (main) Profile prod activated. -2020-08-30 05:49:03,272 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive] +2023-03-22 09:48:39,891 INFO [io.quarkus] (main) quarkus 999-SNAPSHOT on JVM (powered by Quarkus {quarkus-version}) started in 0.283s. Listening on: http://0.0.0.0:8080 +2023-03-22 09:48:39,904 INFO [io.quarkus] (main) Profile prod activated. +2023-03-22 09:48:39,904 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx] ---- Once started, you can request the provided endpoint: @@ -281,7 +276,8 @@ Edit the `quarksapp` class to inject the `GreetingService` and create a new endp [source,java,subs=attributes+] ---- //usr/bin/env jbang "$0" "$@" ; exit $? -//DEPS io.quarkus:quarkus-resteasy-reactive:{quarkus-version} +//DEPS io.quarkus.platform:quarkus-bom:{quarkus-version}@pom +//DEPS io.quarkus:quarkus-resteasy-reactive import io.quarkus.runtime.Quarkus; import jakarta.enterprise.context.ApplicationScoped; @@ -297,7 +293,7 @@ public class quarkusapp { @GET public String sayHello() { - return "hello from Quarkus with jbang.dev"; + return "hello"; } public static void main(String[] args) { @@ -393,34 +389,40 @@ Now during build the `quarkus.swagger-ui.always-include` will be generated into == Running as a native application -If you have the `native-image` binary installed and `GRAALVM_HOME` set, you can get the native executable built and run using `jbang --native quarkusapp.java`: +If you have the `native-image` binary installed and `GRAALVM_HOME` set, or a container runtime (e.g., podman or docker) installed on Linux, you can get the native executable built and run using `jbang --native quarkusapp.java`: [source,shell,subs=attributes+] ---- $ jbang --native quarkusapp.java - [jbang] Building jar... [jbang] Post build with io.quarkus.launcher.JBangIntegration -Aug 30, 2020 6:21:15 AM org.jboss.threads.Version -INFO: JBoss Threads version 3.1.1.Final -Aug 30, 2020 6:21:16 AM io.quarkus.deployment.pkg.steps.JarResultBuildStep buildNativeImageThinJar -INFO: Building native image source jar: /var/folders/yb/sytszfld4sg8vwr1h0w20jlw0000gn/T/quarkus-jbang3291688251685023074/quarkus-application-native-image-source-jar/quarkus-application-runner.jar -Aug 30, 2020 6:21:16 AM io.quarkus.deployment.pkg.steps.NativeImageBuildStep build -INFO: Building native image from /var/folders/yb/sytszfld4sg8vwr1h0w20jlw0000gn/T/quarkus-jbang3291688251685023074/quarkus-application-native-image-source-jar/quarkus-application-runner.jar -Aug 30, 2020 6:21:16 AM io.quarkus.deployment.pkg.steps.NativeImageBuildStep checkGraalVMVersion -INFO: Running Quarkus native-image plugin on GraalVM Version 20.1.0 (Java Version 11.0.7) -Aug 30, 2020 6:21:16 AM io.quarkus.deployment.pkg.steps.NativeImageBuildStep build -INFO: /Users/max/.sdkman/candidates/java/20.1.0.r11-grl/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Dvertx.logger-delegate-factory-class-name=io.quarkus.vertx.core.runtime.VertxLogDelegateFactory -J-Dvertx.disableDnsResolver=true -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=1 -J-Duser.language=en -J-Dfile.encoding=UTF-8 --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy\$BySpaceAndTime -H:+JNI -jar quarkus-application-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:-AddAllCharsets -H:EnableURLProtocols=http --no-server -H:-UseServiceLoaderFeature -H:+StackTrace quarkus-application-runner - -Aug 30, 2020 6:22:31 AM io.quarkus.deployment.QuarkusAugmentor run -INFO: Quarkus augmentation completed in 76010ms +Mar 22, 2023 9:58:47 A.M. org.jboss.threads.Version +INFO: JBoss Threads version 3.5.0.Final +Mar 22, 2023 9:58:47 A.M. io.quarkus.deployment.pkg.steps.JarResultBuildStep buildNativeImageThinJar +INFO: Building native image source jar: /tmp/quarkus-jbang8082065952748314720/quarkus-application-native-image-source-jar/quarkus-application-runner.jar +Mar 22, 2023 9:58:47 A.M. io.quarkus.deployment.pkg.steps.NativeImageBuildStep build +INFO: Building native image from /tmp/quarkus-jbang8082065952748314720/quarkus-application-native-image-source-jar/quarkus-application-runner.jar +Mar 22, 2023 9:58:47 A.M. io.quarkus.deployment.pkg.steps.NativeImageBuildStep getNativeImageBuildRunner +WARN: Cannot find the `native-image` in the GRAALVM_HOME, JAVA_HOME and System PATH. Install it using `gu install native-image` Attempting to fall back to container build. +Mar 22, 2023 9:58:47 A.M. io.quarkus.deployment.pkg.steps.NativeImageBuildContainerRunner +INFO: Using docker to run the native image builder +Mar 22, 2023 9:58:47 A.M. io.quarkus.deployment.pkg.steps.NativeImageBuildContainerRunner setup +INFO: Checking image status quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3-java17 +Mar 22, 2023 9:58:51 A.M. io.quarkus.deployment.pkg.steps.NativeImageBuildStep checkGraalVMVersion +INFO: Running Quarkus native-image plugin on native-image 22.3.1.0-Final Mandrel Distribution (Java Version 17.0.6+10) +Mar 22, 2023 9:58:51 A.M. io.quarkus.deployment.pkg.steps.NativeImageBuildRunner build +INFO: docker run --env LANG=C --rm --user 1000:1000 -v /tmp/quarkus-jbang8082065952748314720/quarkus-application-native-image-source-jar:/project:z --name build-native-XaZUc quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3-java17 -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dlogging.initial-configurator.min-level=500 -J-Dvertx.logger-delegate-factory-class-name=io.quarkus.vertx.core.runtime.VertxLogDelegateFactory -J-Dvertx.disableDnsResolver=true -J-Dio.netty.noUnsafe=true -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=3 -J-Duser.language=en -J-Duser.country=IE -J-Dfile.encoding=UTF-8 --features=io.quarkus.runner.Feature,io.quarkus.runtime.graal.DisableLoggingFeature -J--add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED -J--add-opens=java.base/java.text=ALL-UNNAMED -J--add-opens=java.base/java.io=ALL-UNNAMED -J--add-opens=java.base/java.lang.invoke=ALL-UNNAMED -J--add-opens=java.base/java.util=ALL-UNNAMED -H:+CollectImageBuildStatistics -H:ImageBuildStatisticsFile=quarkus-application-runner-timing-stats.json -H:BuildOutputJSONFile=quarkus-application-runner-build-output-stats.json -H:+AllowFoldMethods -J-Djava.awt.headless=true --no-fallback --link-at-build-time -H:+ReportExceptionStackTraces -H:-AddAllCharsets --enable-url-protocols=http -H:NativeLinkerOption=-no-pie -H:-UseServiceLoaderFeature -H:+StackTrace -J--add-exports=org.graalvm.sdk/org.graalvm.nativeimage.impl=ALL-UNNAMED --exclude-config io\.netty\.netty-codec /META-INF/native-image/io\.netty/netty-codec/generated/handlers/reflect-config\.json --exclude-config io\.netty\.netty-handler /META-INF/native-image/io\.netty/netty-handler/generated/handlers/reflect-config\.json quarkus-application-runner -jar quarkus-application-runner.jar +Mar 22, 2023 9:37:56 A.M. io.quarkus.deployment.pkg.steps.NativeImageBuildRunner runCommand +INFO: docker run --env LANG=C --rm --user 1000:1000 -v /tmp/quarkus-jbang9315448339582904220/quarkus-application-native-image-source-jar:/project:z --entrypoint /bin/bash quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3-java17 -c objcopy --strip-debug quarkus-application-runner +Mar 22, 2023 9:37:57 A.M. io.quarkus.deployment.QuarkusAugmentor run +INFO: Quarkus augmentation completed in 31729ms __ ____ __ _____ ___ __ ____ ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ -2020-08-30 06:22:32,012 INFO [io.quarkus] (main) Quarkus {quarkus-version} native started in 0.017s. Listening on: http://0.0.0.0:8080 -2020-08-30 06:22:32,013 INFO [io.quarkus] (main) Profile prod activated. -2020-08-30 06:22:32,013 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive] +2023-03-22 09:37:57,471 INFO [io.quarkus] (main) quarkus 999-SNAPSHOT native (powered by {quarkus-version}) started in 0.009s. Listening on: http://0.0.0.0:8080 +2023-03-22 09:37:57,472 INFO [io.quarkus] (main) Profile prod activated. +2023-03-22 09:37:57,472 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx] ---- This native build will take some time on first run but any subsequent runs (without changing `quarkusapp.java`) will be close to instant thanks to JBang cache: @@ -432,9 +434,9 @@ __ ____ __ _____ ___ __ ____ ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ -2020-08-30 06:23:36,846 INFO [io.quarkus] (main) Quarkus {quarkus-version} native started in 0.015s. Listening on: http://0.0.0.0:8080 -2020-08-30 06:23:36,846 INFO [io.quarkus] (main) Profile prod activated. -2020-08-30 06:23:36,846 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive] +2023-03-22 09:38:45,450 INFO [io.quarkus] (main) quarkus 999-SNAPSHOT native (powered by {quarkus-version}) started in 0.009s. Listening on: http://0.0.0.0:8080 +2023-03-22 09:38:45,450 INFO [io.quarkus] (main) Profile prod activated. +2023-03-22 09:38:45,450 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx] ---- === Conclusion