zoukankan      html  css  js  c++  java
  • 第一个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/就能看到输出了。

  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/somefuture/p/15774543.html
Copyright © 2011-2022 走看看