网站策划建设方法,建购物的网站需要多少钱,网站推广专家,网站营销咨询顾问quarkus搭建与基础开发环境配置总结
大纲
基础概念quarkus2.13.7脚手架工程配置配置maven3.8.7quarkus快速启动quarkus的三种打包方式quarkus将程序打包为二进制文件window环境下quarkus云原生二进制文件打包环境搭建使用GraalVM-java11替换本地java8运行二进制文件
基础概念…quarkus搭建与基础开发环境配置总结
大纲
基础概念quarkus2.13.7脚手架工程配置配置maven3.8.7quarkus快速启动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 window112 quarkus2.13.7.Final3 graalvm-ce-java11-windows-amd64-22.3.04 maven-3.8.75 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依赖
dependencygroupIdio.quarkus/groupIdartifactIdquarkus-resteasy-reactive/artifactId
/dependency编写一个最简单的restful 接口
Path(/jaxrs)
public class JAXRSResource {GETProduces(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 -versionmaven3.8.7的配置主要注意一下几点
1 maven setting.xml中 切换一个国内的镜像库地址2 eclipse中配置 使用maven setting.xml3 项目pom.xml文件中也可以指定 镜像库地址
maven镜像库地址使用华为云
mirroridhuaweicloud/idnamehuaweicloud maven/namemirrorOf*/mirrorOfurlhttps://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 packageuber-jar打包方式
uber-jar 类似于springboot打包的方式可以把运行时所有依赖的jar 打包在一起成为一个可执行jar包
注意老版本的qurakus 例如1.4.1.Final 打包成为uber-jar 需要在application.properties 添加
quarkus.package.uber-jartrue注意qurakus2.13.7 已经废弃此方法打包uber-jar
使用-Dquarkus.package.typeuber-jar 的方式实现打包成为uber-jar
mvn clean package -Dquarkus.package.typeuber-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.zipnative-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 jrejre生成完成后 在环境变量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.178-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 编译成功 生成可执行文件