文章目录
前言
本文章将演示如何快速的通过idea工具来辅助我们快速的构建一个quarkus项目以及快速部署Docker
创建quarkus项目
首先我们打开Idea
在左边的菜单中选择quarkus,这里要注意 quarkus 只支持jdk11以上的版本,所以这里我选择jdk17, 项目的管理方式为 maven
因为我们要做演示的是Web项目, 所以这里我们选择Web依赖, 这里需要注意的是resteasy系列的依赖互相不兼容, 这里选择有点问题, 所以我不打算选择.
来看一下默认的依赖
这里对我们有用的就是第一个依赖quarkus-arc
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
此时我们的项目已经创建完毕, 可以在Idea的右上交看见项目的名字, 方便一键启动项目, 写quarkus项目的时候最爽的可能是quarkus自带热部署, 你修改了代码里面就可以测试不需要重新启动项目
不过我们的项目目前还不能启动因为少了一个resteasy的相关的依赖, 因为我们需要在接口直接传入对象, 我比较习惯在请求体中传入json来达到传输对象的目的, 而且参数的校验比较容易
添加依赖
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
启动项目
现在我们可以尝试启动quarkus项目
发现quarkus在启动的时候会通过网络去下载一些依赖, 网络不好的同学可能需要注意一下.
我们找到ExampleResource, 因为quarkus官方认为, 我们传统的接口就是一个个对外方法的资源所以在quarkus里面是以资源的概念来进行的.
测试接口
quarkus的默认端口是8080, 所以完整的请求路径是http://localhost:8080/hello,因为我这里使用apifox所以只有这一小段.
测试热部署
现在我们在不重启服务器的情况下修改代码
package com.example;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class ExampleResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "你好Quarkus.";
}
}
可以在控制台看见我跟改了一下代码, 就直接去发请求, quarkus又打印了一边他的banner, 启动时间是0.897, 不过如果你没有修改代码他是不会在去部署的, 这点对开发就很友好.
部署docker
可以看见quarkus提供了一键构建镜像部署的dockerfile文件
如果直接执行肯定是不行的
FROM registry.access.redhat.com/ubi8/openjdk-11:1.11
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
# We make four distinct layers so if there are application changes the library layers can be re-used
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
COPY --chown=185 target/quarkus-app/*.jar /deployments/
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
EXPOSE 8080
USER 185
ENV AB_JOLOKIA_OFF=""
ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
可以看见脚本内容他要在当前目录找到一个target的一个文件夹,所以要使这些dockefile文件能直接执行, 或远程部署需要把他移动到src同级目录, 至于要部署到本地的Window(DockerDestop)还是远程Linux这需要使用到idea的docker服务
打开Idea自带的服务功能添加Docker服务连接
如果是本地Window(DockerDestop)是不需要密码的, 而远程SSH和就是连接openssh, 相信有这需求的都能理解
不过在部署之前得先执行一次maven插件的打包功能, quarkus这点就和SpringBoot一样方便
双击package,等待打包完成就可以直接执行了(这里有个小坑,打包之前会先执行测试文件需要吧test给删除)
根据自身的需求选择选项
此时自动打包完毕, 还可以直接在idea上查看日志
可以看见打包完毕的quarkus项目没有在从网络上获取依赖,而且启动速度也很快, 当然官方就是这么宣传的
总结
本文章将演示如何快速的通过idea工具来辅助我们快速的构建一个quarkus项目以及快速部署Docker,本人是一名在读大专生, 所以可能有经验不足, 联系邮箱197055139@qq.com