首页 > 技术文章 > 第一个Vert.x程序(基于Gradle7)

somefuture 2022-01-07 12:00 原文

这里跑一下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/就能看到输出了。

推荐阅读