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张图片

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/

quarkus 搭建与基础开发环境配置总结_第2张图片

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

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

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

quarkus 搭建与基础开发环境配置总结_第3张图片

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


  io.quarkus
  quarkus-resteasy-reactive

编写一个最简单的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

quarkus 搭建与基础开发环境配置总结_第4张图片

Path中加入  
%MAVEN_HOME%\bin;

运行mvn -version

在这里插入图片描述

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

  • 1 maven setting.xml中 切换一个国内的镜像库地址
  • 2 eclipse中配置 使用maven setting.xml
  • 3 项目pom.xml文件中也可以指定 镜像库地址

maven镜像库地址使用华为云


  huaweicloud
  huaweicloud maven
  *
  https://mirrors.huaweicloud.com/repository/maven/
  

quarkus 搭建与基础开发环境配置总结_第5张图片

eclipse中配置 使用maven setting.xml

quarkus 搭建与基础开发环境配置总结_第6张图片

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

quarkus 搭建与基础开发环境配置总结_第7张图片

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

quarkus快速启动

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

 mvn quarkus:dev

quarkus 搭建与基础开发环境配置总结_第8张图片

访问接口 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"

quarkus 搭建与基础开发环境配置总结_第9张图片

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

quarkus 搭建与基础开发环境配置总结_第10张图片

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

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

使用命令
mvn clean package -Pnative

将应用打包成为一个 原生可执行文件
quarkus 搭建与基础开发环境配置总结_第11张图片

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 选择对应的版本

quarkus 搭建与基础开发环境配置总结_第12张图片

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

quarkus 搭建与基础开发环境配置总结_第13张图片

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 )

quarkus 搭建与基础开发环境配置总结_第14张图片

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

jre生成

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

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

quarkus 搭建与基础开发环境配置总结_第15张图片

\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

quarkus 搭建与基础开发环境配置总结_第16张图片

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

quarkus 搭建与基础开发环境配置总结_第17张图片

%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

quarkus 搭建与基础开发环境配置总结_第18张图片

出现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/

quarkus 搭建与基础开发环境配置总结_第19张图片

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

quarkus 搭建与基础开发环境配置总结_第20张图片

quarkus 搭建与基础开发环境配置总结_第21张图片

选择相关的组件

需要指定语言包

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

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

quarkus 搭建与基础开发环境配置总结_第22张图片

配置对应的环境变量

注意 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;

在这里插入图片描述

quarkus 搭建与基础开发环境配置总结_第23张图片

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

再运行 mvn clean package -Pnative

quarkus 搭建与基础开发环境配置总结_第24张图片

编译成功 生成可执行文件

quarkus 搭建与基础开发环境配置总结_第25张图片

你可能感兴趣的:(java,java,kubernetes,开发语言)