• 第一个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/就能看到输出了。

  • 相关阅读:
    C++ 字符数组
    C++ 从函数返回数组
    C++给函数传数组参数
    串行通信的三种方式
    进程间通信pipe和fifo
    嵌入式开发基本知识
    查找算法
    排序算法
    offsetof与container_of宏[总结]
    uboot自定义添加命令
  • 原文地址:https://www.cnblogs.com/somefuture/p/15774543.html
Copyright © 2020-2023  润新知