1. 程式人生 > 其它 >第一個Vert.x程式(基於Gradle)

第一個Vert.x程式(基於Gradle)

這裡跑一下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/就能看到輸出了。