第一個Vert.x程式(基於Gradle)
阿新 • • 發佈:2022-01-07
這裡跑一下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/就能看到輸出了。