云网牛站
所在位置:首页 > Linux编程 > 在Fedora Silverblue系统上使用Quarkus框架的方法

在Fedora Silverblue系统上使用Quarkus框架的方法

2020-03-12 11:48:18作者:付玉洁稿源:云网牛站

Silverblue是Fedora工作站的一种变体,其功能至关重要的是基于容器的工作流,它应该是Quarkus框架的理想宿主系统。当前有两种方法将Quarkus与Silverblue一起使用,它可以在诸如Toolbox/Coretoolbox之类的容器中运行,或者可以直接在终端仿真器中运行,本文将重点讨论后一种方法。

在Fedora Silverblue系统上使用Quarkus框架的方法

 

先决条件

在开始使用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

至此,测试应用程序完成。

 

相关主题

使用Flatpak在Fedora Silverblue上管理软件包

精选文章
热门文章