写点什么

quarkus2.13.7 搭建与基础开发环境配置总结

作者:刘一江
  • 2023-03-25
    四川
  • 本文字数:4161 字

    阅读完需:约 14 分钟

quarkus2.13.7搭建与基础开发环境配置总结

quarkus 搭建与基础开发环境配置总结

大纲


  • 基础概念

  • quarkus2.13.7 脚手架工程配置

  • 配置 maven3.8.7

  • quarkus 快速启动

  • quarkus 的三种打包方式

  • quarkus 将程序打包为二进制文件

  • window 环境下 quarkus 云原生二进制文件打包环境搭建

  • 使用 GraalVM-java11 替换本地 java8

  • 运行二进制文件

基础概念

Quarkus 是一个集成了 Kubernetes 的开源云原生框架, 基于 ApacheLicense 2.0 发布, 用于创建适配 GraalVM 和 OpenJDK HotSpot 的


Kubernetes 原生应用, 基于 Hibernate、 Eclipse MicroProfile、Kubernetes、 Apache Camel 和 Eclipse Vert.x 等流行库和技术构建。


Quarkus 的优点包括可以与 Docker 和 Kubernetes 轻松集成, 启动速度快, 驻留集大小(RSS) 内存消耗低, 可提高开发者的生产力。


Quarkus是专为下一代应用程序开发与部署而设计和优化的,适合云原生项目
复制代码


官方网站:https://quarkus.io/


quarkus 目前不支持交叉编译 需要在各个平台上独立编译

开始前的准备

开发环境


  • 1 window11

  • 2 quarkus2.13.7.Final

  • 3 graalvm-ce-java11-windows-amd64-22.3.0

  • 4 maven-3.8.7

  • 5 eclipse-java-2022-12-R-win32-x86_64

quarkus 脚手架工程配置

使用 quarkus 提供的脚手架代码生成工具直接生成需要的项目


https://code.quarkus.io/


选择版本 2.13 -> 选择 java11 -> 选择 maven -> 点击生成项目


注意 Starter Code 选择的 NO 不会生成 hello 代码 是一个最纯粹基础项目


下载后解压得的项目结构如下


在 pom.xml 中添加 JAX-RS 依赖


<dependency>  <groupId>io.quarkus</groupId>  <artifactId>quarkus-resteasy-reactive</artifactId></dependency>
复制代码


编写一个最简单的 restful 接口


@Path("/jaxrs")public class JAXRSResource {
@GET @Produces(MediaType.TEXT_PLAIN) @Path("/hello") public String hello() { return "Hello jimliu"; }}
复制代码


此时 最简单的 quarkus 脚手架工程配置完成

maven 配置

**quarkus2.13.7 需要 maven3.8.7 以上版本支持 **


windowhttps://archive.apache.org/dist/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.ziplinuxhttps://archive.apache.org/dist/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz
复制代码


提前配置值好 maven 的环境变量 path


Path中加入  %MAVEN_HOME%\bin;
运行mvn -version
复制代码



maven3.8.7 的配置主要注意一下几点


  • 1 maven setting.xml 中 切换一个国内的镜像库地址

  • 2 eclipse 中配置 使用 maven setting.xml

  • 3 项目 pom.xml 文件中也可以指定 镜像库地址


maven 镜像库地址使用华为云


<mirror>  <id>huaweicloud</id>  <name>huaweicloud maven</name>  <mirrorOf>*</mirrorOf>  <url>https://mirrors.huaweicloud.com/repository/maven/</url></mirror>  
复制代码



eclipse 中配置 使用 maven setting.xml


项目 pom.xml 指定镜像库地址


此时 quarkus 依赖的 maven 环境配置完成

quarkus 快速启动

使用 quarkus maven 插件提供的 quarkus:dev 快速启动 quarkus


 mvn quarkus:dev
复制代码



访问接口 http://127.0.0.1:8080/jaxrs/hello 返回成功


quarkus 插件支持热更新,现在稍微修改下 JAXRSResource.java 代码可以立刻看到修改后的结果


@GET@Produces(MediaType.TEXT_PLAIN)@Path("/hello")public String hello() {    return "Hello jimliu- 寂寞的4角钱";}
复制代码



注意 quarkus2.13.7 需要 java11 环境 如果还没搭建 java11 可先跳到此步骤

quarkus 的三种打包方式

quarkus 的三种打包方式


  • 1 普通打包方式

  • 2 uber-jar 打包方式

  • 3 静态编译后的原生可执行文件方式

普通打包方式

使用 maven package 命令打包项目 这是默认的方式打包出来的 jar 不包含运行时依赖的包


 mvn clean package



复制代码

uber-jar 打包方式

uber-jar 类似于 springboot 打包的方式,可以把运行时所有依赖的 jar 打包在一起成为一个可执行 jar 包


注意:老版本的 qurakus 例如 1.4.1.Final 打包成为 uber-jar 需要在 application.properties 添加


quarkus.package.uber-jar=true
复制代码


注意:qurakus2.13.7 已经废弃此方法打包 uber-jar


使用-Dquarkus.package.type=uber-jar 的方式实现打包成为uber-jarmvn clean package "-Dquarkus.package.type=uber-jar"
复制代码



打包后的 uber-jar 在 target 目录下的 xxx-runner.jar


静态编译后的原生可执行文件方式

quarkus 的优势是将 java 项目打包成为原生可执行文件,让 java 程序适应云原生时代的快速启动,快速进入高效状态的需求


使用命令mvn clean package -Pnative
复制代码


将应用打包成为一个 原生可执行文件


window 环境下 quarkus 云原生二进制文件打包环境搭建

quarkus 将项目编译成原生可执行文件需要 GraalVM 的支持 关于 GraalVM 参考《Java GraalVM 环境搭建 class文件springboot项目 静态编译二进制文件 入门就看这一篇》


quarkus2.13.7.Final



GraalVM 选择对应的版本


native-image 注意需要和 GraalVM 版本 平台一致


window 环境


  • graalvm-ce-java11-windows-amd64-22.3.0.zip

  • native-image-installable-svm-java11-windows-amd64-22.3.0.jar

使用 GraalVM-java11 替换本地 java8

由于 quarkus2.13.7.Final 需要 java 版本 11 GraalVM 内置 openJDK 可以直接使用 GraalVM 代替本地的 java8 Hotspot


注意事项


  • 1 GraalVM java11 jre 生成

  • 2 JAVA 环境变量配置

替换 JAVA_HOME

例如GraalVM 解压在如下文件夹D:\graalvm\graalvm-ce-java11-windows-amd64-22.3.0\graalvm-ce-java11-22.3.0
复制代码


先创建 JAVA_HOME (或者替换已存在的 java8 的 JAVA_HOME )


需要保证 PATH 下只有一个 java 命令

jre 生成

java9 开始 安装 jdk 后不再安装 jre 需要自行添加


%JAVA_HOME %/jmods 文件夹下是支持的模块,把这些模块全部都安装起


\bin\jlink.exe --module-path jmods --add-modules com.oracle.graal.graal_enterprise,com.oracle.svm.svm_enterprise,com.oracle.svm_enterprise.ml_dataset,com.oracle.truffle.regex,com.oracle.truffle.truffle_nfi,com.oracle.truffle.truffle_nfi_libffi,java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.management.rmi,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.se,java.security.jgss,java.security.sasl,java.smartcardio,java.sql,java.sql.rowset,java.transaction.xa,java.xml.crypto,java.xml,jdk.accessibility,jdk.attach,jdk.charsets,jdk.compiler,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.crypto.mscapi,jdk.dynalink,jdk.editpad,jdk.hotspot.agent,jdk.httpserver,jdk.internal.ed,jdk.internal.jvmstat,jdk.internal.le,jdk.internal.opt,jdk.internal.vm.ci,jdk.internal.vm.compiler,jdk.internal.vm.compiler.management,jdk.internal.vm.compiler.truffle.jfr,jdk.jartool,jdk.javadoc,jdk.jcmd,jdk.jconsole,jdk.jdeps,jdk.jdi,jdk.jdwp.agent,jdk.jfr,jdk.jlink,jdk.jshell,jdk.jsobject,jdk.jstatd,jdk.localedata,jdk.management.agent,jdk.management.jfr,jdk.management,jdk.naming.dns,jdk.naming.ldap,jdk.naming.rmi,jdk.net,jdk.pack,jdk.rmic,jdk.scripting.nashorn,jdk.scripting.nashorn.shell,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsupported.desktop,jdk.unsupported,jdk.xml.dom,jdk.zipfs,org.graalvm.js.scriptengine,org.graalvm.locator,org.graalvm.nativeimage.llvm,org.graalvm.sdk,org.graalvm.truffle  --output jre
复制代码



jre 生成完成后 在环境变量 Path 中添加对应的路径


%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
复制代码


注意 window 修改环境变量后需要重启电脑才能生效


重启电脑后 环境变量配置完成


GraalVM-window 编译环境配置

window 编译环境需要安装对应的 native-image 以及 Visual Studio

native-image

native-image 安装可以参考 《Java GraalVM 环境搭建 class文件springboot项目 静态编译二进制文件 入门就看这一篇》


例如 native-image-installable-svm-java11-windows-amd64-22.3.0.jar 放置在 D:\graalvm\install 文件夹下


执行gu install -L native-image-installable-svm-java11-linux-amd64-22.2.0.jar
复制代码



出现 GraalVM 22.3.0 Java 11 CE (Java Version 11.0.17+8-jvmci-22.3-b08) 表示完成成功

Visual Studio 安装与环境配置

Visual Studio 安装与环境配置注意事项


  • 1 需要安装 MSVC 工具

  • 2 需要指定语言包

  • 3 需要配置对应的环境变量

MSVC 工具

Windows 开发环境下,还需要安装 Visual Studio,并安装 MSVC 工具 否则 GraalVM 静态编译时会出 cl.exe 找不到的错误


Error: Default native-compiler executable 'cl.exe' not found via environment variable PATH
复制代码


下载 Visual Studio 并安装对应的工具


Visual Studio 下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/


下载社区版 下载后运行 VisualStudioSetup.exe



选择相关的组件

需要指定语言包

语言包勾选英文,去掉中文,否则 quarkus -Pnative 打 native-image 二进制文件时会编译报错:


Native-image building on Windows currently only supports target architecture: AMD64 (?? unsupported)
复制代码




配置对应的环境变量

注意 window 修改环境变量后需要重启电脑才能生效


配置 window 环境下编译需要的环境变量。否则 quarkus -Pnative 打 native-image 二进制文件时会编译报错


Cannot open include file: 'stdio.h': No such file or directory
复制代码


环境变量配置如下 (注意 C:\Program Files\Microsoft Visual Studio\2022\ 是 Visual Studio 的安装路径)


1 添加环境变量MSVC = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215
WIN11_INCLUDE = C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0WIN11_LIB = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0 ## 变量值必须为INCLUDE和LIBINCLUDE = %WIN11_INCLUDE%\ucrt;%WIN11_INCLUDE%\um;%WIN11_INCLUDE%\shared;%MSVC%\includeLIB = %WIN11_LIB%\um\x64;%WIN11_LIB%\ucrt\x64;%MSVC%\lib\x64
2 添加path中指定 MSVC cl.exe路径C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\bin\Hostx64\x64;
复制代码




注意:变量值必须为 INCLUDE 和 LIB


再运行 mvn clean package -Pnative


编译成功 生成可执行文件


发布于: 刚刚阅读数: 3
用户头像

刘一江

关注

老程序员 2020-08-17 加入

还未添加个人简介

评论

发布
暂无评论
quarkus2.13.7搭建与基础开发环境配置总结_GraalVM_刘一江_InfoQ写作社区