Silverblue是Fedora工作站的一种变体,其功能至关重要的是基于容器的工作流,它应该是Quarkus框架的理想宿主系统。当前有两种方法将Quarkus与Silverblue一起使用,它可以在诸如Toolbox/Coretoolbox之类的容器中运行,或者可以直接在终端仿真器中运行,本文将重点讨论后一种方法。
先决条件 在开始使用Quarkus之前,需要配置一些先决条件。首先,您需要选择一个IDE,VIM或Emacs也可以正常工作。需要安装JDK版本,JDK 8、JDK 11或OpenJDK的任何发行版都可以。需要GrallVM 19.2.1或19.3.1才能编译为本机,您还将需要Apache Maven 3.53+或Gradle,本文将使用Maven。使用以下命令将Java 11 OpenJDK和Maven分层到Silverblue上: $ rpm-ostree install java-11-openjdk* maven 另外,您可以下载自己喜欢的Java版本并将其直接安装在主目录中,参考在Linux发行版中安装Java 13/OpenJDK 13的方法。 重新引导后,配置JAVA_HOME和PATH环境变量以引用新的应用程序。接下来,转到GraalVM下载页面,地址是https://www.graalvm.org/downloads/,并获得用于Java 11 OpenJDK的GraalVM版本19.2.1或版本19.3.1,按照提供的说明安装Graal。基本上,将存档复制并解压缩到主目录下的目录中,然后修改PATH环境变量以包含Graal。您可以像使用任何JDK一样使用它。因此,您可以在您选择的IDE中将其设置为平台。如果您要使用本机映像,现在是时候设置本机映像了。安装了这些部件并进行了环境设置后,您现在可以试用Quarkus。
Bootstrapping Quarkus建议您使用Bootstrapping方法创建一个项目,以下是在Silverblue的Gnome Shell中输入到终端仿真器中的一些示例命令: $ mvn io.quarkus:quarkus-maven-plugin:1.2.1.Final:create \ -DprojectGroupId=org.jakfrost \ -DprojectArtifactId=silverblue-logo \ -DclassName="org.jakfrost.quickstart.GreetingResource" \ -Dpath="/hello" $ cd silverblue-logo 上面显示的引导过程将在当前目录下创建一个名为silverblue-logo的项目,完成此操作后,以开发模式启动应用程序: $ ./mvnw compile quarkus:dev 在应用程序运行的情况下,通过输入以下命令来检查其是否响应预期: $ curl -w '\n' http://localhost:8080/hello 上面的命令应该在下一行打印hello。或者,通过使用Web浏览器浏览到http://localhost:8080/hello来测试应用程序。下一部分继续运行该应用程序。
注入 在您喜欢的IDE中打开项目,如果使用的是Netbeans,只需打开pom.xml文件所在的项目目录,现在是时候看看pom.xml文件了。 Quarkus使用ArC进行依赖注入,ArC是quarkus-resteasy的依赖项,因此它已经是Quarkus核心安装的一部分。通过在您的IDE中创建一个名为GreetingService.java的Java类,将同伴bean添加到项目中,然后将以下代码放入其中: import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class GreetingService { public String greeting(String name) { return "hello " + name; } } 上面的代码是Quarkus入门教程中注入示例所用内容的完整副本,通过添加以下代码行来修改GreetingResource.java: import javax.inject.Inject; import org.jboss.resteasy.annotations.jaxrs.PathParam; @Inject GreetingService service;//inject the service @GET //add a getter to use the injected service @Produces(MediaType.TEXT_PLAIN) @Path("/greeting/{name}") public String greeting(@PathParam String name) { return service.greeting(name); } 如果您尚未停止应用程序,则很容易看到更改的效果,只需输入以下curl命令: $ curl -w '\n' http://localhost:8080/hello/greeting/Silverblue 该URL在网络浏览器中应具有相似的功能,有两件事要注意: 1]、该应用程序正在运行,并且Quarkus快速检测到文件更改。 2]、将代码注入应用程序非常容易执行。
本机图像 接下来,将您的应用程序打包为可在podman容器中使用的本机映像,通过按CTRL-C退出应用程序。然后使用以下命令对其进行打包: $ ./mvnw package -Pnative -Dquarkus.native.container-runtime=podman 参考:在CentOS 7、Fedora 30/29/28上安装Podman的方法。 现在,构建容器: $ podman build -f src/main/docker/Dockerfile.native -t silverblue-logo/silverblue-logo 现在,使用以下命令运行它: $ podman run -i --rm -p 8080:8080 localhost/silverblue-logo/silverblue-logo 为了使容器构建成功完成,必须将/target目录和内容复制到src/main/docker/目录中。 现在您已经在容器中运行了应用程序,可以使用与之前相同的方法来验证其是否正常运行。 将您的浏览器指向URL:http://localhost:8080/,您应该获得每次创建或修改应用程序时Quarkus自动生成的index.html,它位于src/main/resources/META-INF/resources/目录中,将其他HTML文件放在此资源目录中,以使Quarkus根据请求提供它们。 例如,在资源目录中创建一个名为logo.html的文件,其中包含以下标记: <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <title>Silverblue</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <img src="fedora-silverblue-logo.png" src="https://ywnz.com/uploads/allimg/20/1-200312114K5517.png" style="width: 235px; height: 85px;" /> 现在,在http://localhost:8080/logo.html上查看结果。
测试您的应用程序 Quarkus支持junit 5测试,查看您项目的pom.xml文件。在其中,您应该看到两个测试依赖项。生成的项目将包含一个简单的测试,名为GreetingResourceTest.java。仅在生产模式下支持测试本机文件。但是,您可以在dev模式下测试jar文件,这些测试是RestAssured,但是您可以在Quarkus中使用所需的任何测试库。使用Maven运行测试: $ ./mvnw test 至此,测试应用程序完成。
相关主题 |