这里跑一下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)的更多相关文章

  1. 入门 第一个python可视化程序 基于pyqt5

    不得不说 py的GUI实在是太难上手了 我现在突然很怀念MFC VB c#这些东西了 因为控件的代码你只要一点就能进入查看 而pyqt5 pyside2 都不可以 你要看就看全部的代码 你要改你也只能 ...

  2. 第一个Vert.x程序

    Jar依赖 <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-core</ar ...

  3. 基于Unity的AR开发初探:第一个AR应用程序

    记得2014年曾经写过一个Unity3D的游戏开发初探系列,收获了很多好评和鼓励,不过自那之后再也没有用过Unity,因为没有相关的需求让我能用到.目前公司有一个App开发的需求,想要融合一下AR到A ...

  4. 概率图模型 基于R语言 这本书中的第一个R语言程序

    概率图模型 基于R语言 这本书中的第一个R语言程序 prior <- c(working =0.99,broken =0.01) likelihood <- rbind(working = ...

  5. 手把手教你写一个RN小程序!

    时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...

  6. 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序

    1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...

  7. ASP.NET MVC Web API 学习笔记---第一个Web API程序

    http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...

  8. 第一章 第一个spring boot程序(转载)

    第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html   环境: jdk:1.8.0_73 mave ...

  9. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序

    前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...

  10. Django教程:第一个Django应用程序(4)

    Django教程:第一个Django应用程序(4) 2013-10-09 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 #博客: ...

随机推荐

  1. python教程6.6-发送邮件smtplib

    实现步骤: Python对SMTP⽀持有 smtplib 和 email 两个模块, email 负责构造邮件, smtplib 负责发送邮件,它对smtp协议进⾏了简单的封装. 简单代码示例: 发送 ...

  2. 数据库实验—DDL

    使用SQL语句,在D盘的Data文件夹下,创建一个名为jxdb+学号后2位的教学管理数据库(如:学号后两位为01,则数据库名为jxdb01).把教学管理数据库文件增长参数设置为4MB,文件最大大小参数 ...

  3. 微信小程序 canvas 手写签名(2d)

    canvas 2d 目前支持预览,不支持真机调试 index.wxml <canvas type="2d" id="canvas" bindtouchmo ...

  4. vue-element-admin 运行踩坑笔记

      npm WARN deprecated svgo@1.3.2: This SVGO version is no longer supported. Upgrade to v2.x.x. npm E ...

  5. MahApps.Metro的MVVM模式解析(二) 主题功能

    MahApps.Metro的MVVM模式解析(二) 主题功能 MahApps.Metro是一个开源的WPF框架,旨在为WPF应用程序提供现代和漂亮的用户界面. 在MahApps.Metro中提供了切换 ...

  6. mac http&git代理配置

    git代理清除git config --global --unset http.proxygit config --global --unset https.proxy 输出代理:$echo $htt ...

  7. vue3+vant 引入Dialog Toast都会失败报错not defined

    今天在封装vant组件的时候,刚好要用到toast提示信息的组件,索性就按照官网提供的引入方法进行正常的引入,嘿,好家伙,一顿操作下来后发现竟然报Toast未定义,这就纳闷了,明明步骤都是对的啊,所以 ...

  8. k8s——kubctl命令基础

    语法 kubevtl [command] [type] [name] [flags] command: 指定要对一个或多个资源执行的操作,例如,`create`,`get`,`describe`,`d ...

  9. Linux驱动--IOCTL实现

    参考:[Linux]实现设备驱动的ioctl函数_哔哩哔哩_bilibili.<Linux设备驱动程序(中文第三版).pdf> 1 用户空间ioctl 用户空间的ioctl函数原型,参数是 ...

  10. Nacos 源码环境搭建

    最近在学习nacos,通过调式源码查看服务注册和发现流程和原理,本地部署naos源码需要一定的步骤,本文主要做nacos源码部署. nacos版本:2.1.1 下载源码 从github上下载源码到本地 ...