现在 Maven 已经设置好了,我们可以通过它的 Maven 插件来引导我们的第一个 Quarkus 应用程序。 Maven 插件提供了一组目标,可以执行这些目标来编译和构建我们的工件或使用某些功能扩展我们的项目。每个插件,就像每个 Maven 组件一样,都基于以下坐标:
- groupId: The ID of the project's group. This often matches the ID of the package root directory.
- artifactId: The ID of the artifact. This often matches with the final artifact name.
- version: The version of the artifact under the specified group.
您可以通过指示 <groupId>:<artifactId> 坐标从命令行引用 Maven 插件。对于 Quarkus,
:
组合是 io.quarkus:quarkus-maven-plugin。您可以使用以下命令检查可用目标及其最新版本:
您将看到以下输出:
我们第一个应用程序的源代码可以位于本书 GitHub 存储库的 Chapter02/hello-rest 文件夹中。作为参考,我们使用 Maven 插件创建了应用程序并配置了以下一组参数:
作为上述命令的结果,在 hello-rest 文件夹中生成了以下目录结构:
在本章的下一节中,我们将学习如何将项目导入 IntelliJ IDEA(不过,在任何 IDE 中,步骤都几乎相同)。现在,让我们继续前面的项目树视图,看看这个项目中包含的文件:
- A Project Object Model (pom.xml) with the project configuration
- A sample REST service named SimpleRest.java and a test class for it named SimpleRestTest.java, as well as a wrapper class named NativeSimpleRestIT.java for executing the test against the native executable application
- A placeholder for the configuration file (application.properties)
- An index.html file to indicate where we can add static web content
- A Dockerfile so that we can create a container out of our applications
- A Maven wrapper file (mvnw/mvnw.cmd) to allow us to execute Maven goals without prior installation of it
pom.xml 文件将被添加到项目的根目录中。在那里,您将找到一个上部 dependencyManagement 部分,它导入 Quarkus 的 Bill Of Materials。这使我们能够自动链接每个 Quarkus 扩展的确切版本。
在 Quarkus 的 1.0.0.Final 版本中,您将引用
artifactId 命名
quarkus-universe-bom,属于
groupId io.quarkus。
在这里,还包含 quarkus-maven-plugin 以允许您打包应用程序并生成本机可执行文件:
进入依赖项部分,您将看到唯一添加的运行时依赖项是以下一个,它允许您执行基本的 REST 应用程序:
RESTEasy 是 JAX-RS 规范的可移植实现,默认包含在 WildFly 应用服务器 ( http://www.wildfly.org)。您可以使用它通过使用无状态通信的标准 HTTP 方法来提供服务的表示。
除了 quarkus-resteasy 之外,您的 pom.xml 文件中还包含一些其他库,用于测试您的应用程序。这将在测试 Quarkus 应用程序部分中更详细地讨论。
To add additional libraries to your project, besides editing the
pom.xml file, you can also use
add-extension, which can be found in Quarkus' Maven plugin. An example of this is
$ mvn quarkus:add-extension -Dextensions="io.quarkus:quarkus-jsonp,io.quarkus:quarkus-smallrye-health".
以下 SimpleRest 类已在 src/main/java/com/packt/quarkus/Chapter02 中为您自动生成:
如您所见,这是一个非常简单的 REST 端点,当 /helloworld GET 请求到达默认端口时,它利用 JAX-RS API 生成 TEXT_PLAIN 资源。
Simpler than JAX-RS!
As we mentioned previously, Quarkus simplifies code development to provide sensible defaults. However, we don't need to declare an
ApplicationScoped class to bootstrap the REST service anymore since we will get it as the default option.