> 文章列表 > quarkus 搭建与基础开发环境配置总结

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

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

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以上版本支持

window
https://archive.apache.org/dist/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.zip
linux
https://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-jar
mvn 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

  • 1 需要java版本11

  • 2 需要GraalVM版本为22.3.0

    GraalVM下载地址: https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0

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.32215WIN11_INCLUDE = C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0
WIN11_LIB = C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.22000.0## 变量值必须为INCLUDE和LIB
INCLUDE = %WIN11_INCLUDE%\\ucrt;%WIN11_INCLUDE%\\um;%WIN11_INCLUDE%\\shared;%MSVC%\\include
LIB = %WIN11_LIB%\\um\\x64;%WIN11_LIB%\\ucrt\\x64;%MSVC%\\lib\\x642 添加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

在这里插入图片描述

编译成功 生成可执行文件

在这里插入图片描述