第一个Vert.x程序(基于Gradle7)
这里跑一下Vert.x中文站的入门程序(以后就不写那个点了,或者干脆写vx)简易教程。这个程序非常简单,为啥还写一下呢?因为里面的依赖有点老,已经不能直接成功启动了。
搭建项目
通过IDEA创建Gradle项目,现在IDEA指定的应该是7.1的Gradle。而中文站的应该不是了

创建好以后,idea会自动同步gradle,同步完就自动创建了src等目录

先去修改build.gradle引入vx的依赖,这里我们使用版本4,中文站是3
dependencies {
implementation 'io.vertx:vertx-core:4.2.2'
}

然后去创建Verticle:
public class MyFirstVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
vertx.createHttpServer().requestHandler(req -> {
req.response().putHeader("content-type", "text/plain")
.end("Hello Vertx");
}).listen(8080);
}
}
public class MainVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
vertx.deployVerticle(MyFirstVerticle.class.getName());
}
}
可以看到Vx不同于SpringBoot需要创建main方法,当然也可以像中文站一开始那样使用main方法。但是不创建main方法也行。现在你可能也纳闷没用main方法怎么能执行呢?回想一下N年前,我们还在使用war的时候也没写过main方法呀,直接写好业务逻辑放到tomcat啥的上面就好了
修复项目
这样按照中文站的配置只能通过idea启动,并不能创建fat jar来部署。我去gradle官网搜索Uber/Fat啥的试了也不能成功打包。后来想着去试一下官方的例子吧 Get started with Vert.x,把代码下下来发现vx官方已经使用kotlin代替groovy了:)。还好差别不大,我顺利改成功了。下面是完整的build.gradle
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version "7.1.2"
}
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.2'
implementation 'io.vertx:vertx-core:4.2.2'
}
test {
useJUnitPlatform()
}
shadowJar {
archiveClassifier = 'fat'
manifest {
attributes "Main-Class": "io.vertx.core.Launcher",
"Main-Verticle": "io.example.MainVerticle"
}
mergeServiceFiles()
}
application {
mainClass.set("io.vertx.core.Launcher")
}
可以看到多引入了两个插件,其中的shadow插件就是用来生成胖jar的。
接下来通过执行application或者shadow都可以生成胖jar了:

执行shadow插件只会生成jar并不会启动程序,可以到项目的build/libs下面找到生成的jar通过java运行

程序秒启动(当然一秒都用不了),然后访问http://localhost:8080/就能看到输出了。
第一个Vert.x程序(基于Gradle7)的更多相关文章
- 入门 第一个python可视化程序 基于pyqt5
不得不说 py的GUI实在是太难上手了 我现在突然很怀念MFC VB c#这些东西了 因为控件的代码你只要一点就能进入查看 而pyqt5 pyside2 都不可以 你要看就看全部的代码 你要改你也只能 ...
- 第一个Vert.x程序
Jar依赖 <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-core</ar ...
- 基于Unity的AR开发初探:第一个AR应用程序
记得2014年曾经写过一个Unity3D的游戏开发初探系列,收获了很多好评和鼓励,不过自那之后再也没有用过Unity,因为没有相关的需求让我能用到.目前公司有一个App开发的需求,想要融合一下AR到A ...
- 概率图模型 基于R语言 这本书中的第一个R语言程序
概率图模型 基于R语言 这本书中的第一个R语言程序 prior <- c(working =0.99,broken =0.01) likelihood <- rbind(working = ...
- 手把手教你写一个RN小程序!
时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- 第一章 第一个spring boot程序(转载)
第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html 环境: jdk:1.8.0_73 mave ...
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- Django教程:第一个Django应用程序(4)
Django教程:第一个Django应用程序(4) 2013-10-09 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 #博客: ...
随机推荐
- VMware之系统复制
目录 功能描述 复制centos7-1文件夹 载入复制的系统 设置配置 启动系统 修改网卡配置 刷新配置 测试上网 功能描述 复制已经安装好的centOs7.6 复制centos7-1文件夹 1.系统 ...
- iframe 高度设置为0时还有占位_iframe占位
iframe是一个内联元素,默认是跟baseline对齐的,iframe后边有个看不见.摸不着的行内空白节点,空白节点占据着高度,iframe与空白节点的基线对齐,导致了div被撑开,从而出现滚动条, ...
- MindSpore梯度进阶操作
技术背景 在MindSpore深度学习框架中,我们可以使用mindspore.grad对函数式编程的函数直接计算自动微分,也可以使用mindspore.ops.GradOperation求解Cell类 ...
- C# EF 使用sqlite 数据库出现表名出现dbo的坑
当ef使用sqlite时,正常情况映射的表名是没有dbo开头的.这个dbo是映射的sa用户,而sqlite是没有用户的.所以映射出的sql语句是查不到数据的. 我在网上找半天解决方案,都不得行.后 ...
- Gitea 代码仓库平台
引言 Gitea 是一个自己托管的 Git 服务程序.他和 GitHub,Bitbucket or Gitlab 等比较类似.它是从 Gogs 发展而来,不过它已经 Fork 并且命名为 Gitea. ...
- django多表关联实战
定义模型类: from django.db import models from django.contrib.auth.models import User ''' ---------- Djang ...
- HTML——input之复选框
在 HTML 中,把 <input> 标签中的 type 属性设置为 checkbox 可以实现多选框的效果.具体语法格式如下: <input type="checkbox ...
- 如何5分钟上手使用OCR
随便打开一个Microsoft Visual Studio,新建一个WinForms项目,从下面列表中随便选择一个NET框架. net35;net40;net45;net451;net452;net4 ...
- 构建X264 .a 静态库 For iOS
一.构建X264准备 1.下载X264源代码到本地,并解压.修改文件夹名称为x264 ftp://ftp.videolan.org/pub/x264/snapshots/ 2.下载gas-prepro ...
- Java BigInteger类和BigDecimal()类
BigInteger类 BigInteger 支持任意精度的整数,可以准确的表达任何大小的整数而不丢失精准度 BigInteger 位于 java.math包中 BigInteger()括号里必须是字 ...