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

news2024/9/21 10:37:09

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.32215

WIN11_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\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

在这里插入图片描述

编译成功 生成可执行文件

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/391548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux操作系统学习(线程同步)

文章目录线程同步条件变量生产者与消费者模型信号量环形队列应用生产者消费者模型线程同步 ​ 现实生活中我们经常会遇到同一个资源多个人都想使用的问题&#xff0c;例如游乐园过山车排队&#xff0c;玩完的游客还想再玩&#xff0c;最好的办法就是玩完的游客想再玩就去重新排…

分享几种WordPress怎么实现相关文章功能

一淘模板&#xff08;56admin.com&#xff09;给大家介绍一下WordPress代码实现相关文章的几种方法&#xff0c;希望对大家有所帮助&#xff01; WordPress很多插件可以实现相关文章的功能&#xff0c;插件的优点是配置简单&#xff0c;但是可能会对网站的速度造成一些小的影响…

做数据分析有前景吗?

当然有前景的。 每个行业都有发展前景&#xff0c;只是看你自身的技能情况或者关系人脉、软实力方面是否到位&#xff0c;不同的行业要求不一样。作为数据分析领域而言&#xff0c;属于IT行业&#xff0c;看的是你的专业技能&#xff1b;只要你技能过硬&#xff0c;就能在行业…

蓝桥杯 时间显示

题目 输入输出样例 示例 1 输入 46800999输出 13:00:00示例 2 输入 1618708103123输出 01:08:23评测用例规模与约定 对于所有评测用例&#xff0c;给定的时间为不超过 10^{18}1018 的正整数。 运行限制 最大运行时间&#xff1a;1s最大运行内存: 512M 基础知识 时间的转换…

Go底层原理:一起来唠唠GMP调度(一)

目录前言一、进程、线程、Goroutine1、进程与线程2、Goroutine二、Go调度器设计思想1、线程模型1.1 内核级线程模型1.2 用户级线程模型1.3 混合型线程模型2、 被废弃的 G-M 调度器2.1 了解 G-M 调度如何工作3、如今高效的 GMP 模型3.1 GMP模型调度流程3.2 GMP调度设计策略3.3 G…

【Vue3】封装数字框组件

数量选择组件-基本结构 &#xff08;1&#xff09;准备基本结构 <script lang"ts" setup name"Numbox"> // </script> <template><div class"numbox"><div class"label">数量</div><div cla…

C语言-基础了解-19-C位域

C位域 一、C位域 如果程序的结构中包含多个开关量&#xff0c;只有 TRUE/FALSE 变量&#xff0c;如下&#xff1a; struct {unsigned int widthValidated;unsigned int heightValidated; } status;这种结构需要 8 字节的内存空间&#xff0c;但在实际上&#xff0c;在每个变…

引领云数仓创新浪潮 HashData闪耀PostgreSQL中国技术大会

3月3日-3月5日&#xff0c;第12届PostgreSQL中国技术大会在杭州举行。本次大会以“突破•进化•共赢——安全可靠&#xff0c;共建与机遇”为主题&#xff0c;以线上线上结合的方式&#xff0c;邀请了PG领域众多行业大咖、学术精英及技术专家&#xff0c;共同探讨数据库未来的发…

【C/C++ 数据结构】-八大排序之 归并排序其它排序

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【C/C数据结构与算法】 分享&#xff1a;本王在此&#xff0c;狼狈为奸者&#xff0c;谋权篡位者&#xff0c;倒行逆施者&#xff0c;都得死&#xff01; ——岐王李茂贞《画江湖…

Linux 静态与动态编译、静态库与动态库

文章目录一、库的简介二、静态链接和动态链接1、静态链接2、动态链接3、GCC 下动态库与静态库三、静态库制作和使用四、动态库制作和使用总结一、库的简介 什么是库文件呢&#xff1f; 所谓库文件&#xff0c;大家可以将其等价为压缩包文件&#xff0c;该文件内部通常包含不止…

MyBatis源码分析(六)MetaObject工具类的使用与源码分析

文章目录一、MetaObject基本使用二、关键类源码分析1、MetaObject的构造方法2、PropertyTokenizer分词器3、BeanWrapper4、MetaClass5、DefaultReflectorFactory6、Reflector7、总结三、MetaObject的getValue源码分析写在后面一、MetaObject基本使用 public class User {priva…

OPT(奥普特)一键测量传感器SmartFlash高精度的四重保证

OPT&#xff08;奥普特&#xff09;一键测量传感器SmartFlash集成了机器视觉的边缘提取、自动匹配、自动对焦、自动学习及图像合成等人工智能技术&#xff0c;采用双远心光路及多角度照明系统设计&#xff0c;搭载高精度运动平台&#xff0c;并通过亚像素边缘提取算法处理图像&…

Mysql全解[中级篇]

目录存储引擎MySQL体系结构1). 连接层2). 服务层3). 引擎层4). 存储层存储引擎介绍存储引擎特点InnoDBMyISAMMemory文件区别及特点存储引擎选择索引无索引情况有索引情况特点索引结构二叉树红黑树B-TreeBTreeMySQL中优化之后的BTreeHash索引分类聚集索引&二级索引回表查询索…

双周赛99(贪心、数学、区间合并计算、换根DP)

文章目录双周赛99[6312. 最小和分割](https://leetcode.cn/problems/split-with-minimum-sum/)贪心[6311. 统计染色格子数](https://leetcode.cn/problems/count-total-number-of-colored-cells/)找规律[6313. 统计将重叠区间合并成组的方案数](https://leetcode.cn/problems/c…

规并排序(Swift版本)

Overview 概述 时间复杂度为 O(nlogn) ;适合大规模的数据排序 ;相比于冒泡排序、插入排序、选择排序这三种排序算法, 更加常用 ;用到了分治思想(即分而治之, 英文叫 “Divide and conquer”)&#xff0c;非常巧妙 ;英文名称: Merge Sort ; 分治思想, 在很多领域都有广泛的应用…

windows系统安装Linux虚拟机教程

虚拟机的安装首先要下载虚拟机的安装包&#xff0c;当前最新版本是VMware 16.2.1。软件我都已经给大家准备好了&#xff08;含序列号&#xff09;&#xff0c;大家在这里下载就好。虚拟机安装包下载完毕之后&#xff0c;将它安装到电脑里。这个安装过程很简单&#xff0c;一路下…

Linux操作系统学习(线程池)

文章目录线程池线程池原理代码示例单例模式饿汉模式懒汉模式饿汉懒汉对比其他的锁线程池 线程池原理 ​ 线程池是一种线程使用模式。在多线程应用中&#xff0c;若每有一个任务&#xff0c;线程就去调度相应的函数去创建&#xff0c;当任务过多时&#xff0c;每次都去调度且每…

CCF大数据专家委员会十周年纪念庆典纪实:拥抱数字时代,展望科技未来

山河远阔&#xff0c;奋进十年&#xff0c;作为国内大数据领域最权威的学术组织&#xff0c;CCF大数据专家委员会&#xff08;以下简称“大专委”&#xff09;不忘初心&#xff0c;凝心聚力&#xff0c;见证并推动了过去10年来大数据技术生态在中国的建立、发展和成熟。 2023年…

HBase安装

文章目录一、安装Zookeeper二、安装HBase三、启动Hbase步骤四、关闭进程顺序五、简单使用Hbase在开始安装HBase之前&#xff0c;请确保您已经安装了Java运行环境和Hadoop分布式文件系统。如果您还没有安装这些软件&#xff0c;请查看之前博文介绍安装。 HBase安装包&#xff1a…

谷歌广告投放步骤流程是什么?一文带你全方位了解实操细节

谷歌&#xff0c;大家都不陌生吧&#xff0c;一个人们很常用的搜索引擎。而谷歌还可以打广告&#xff0c;即谷歌广告&#xff0c;那这跟跨境电商有什么关心呢&#xff1f;东哥告诉大家&#xff0c;关系大了去了&#xff0c;毕竟如果用户搜索与我们相关的关键词&#xff0c;就有…