SimpleStart

    本文将会建立一个基本的HTTP服务器,并监听8080端口,对于任何发往该服务器以及端口的请求,服务器会返回一个Hello World字符串。与Start部分不同的是:

    1. SimpleStart将会使用IDE,也就是集成开发环境来简化开发流程;

    2. SimpleStart将会使用Gradle,而非Maven来简化相关设置。

    首先去JetBrain官方网站:www.jetbrains.com 免费下载集成开发环境(IDE)IntelliJ IDEA,有两个版本,社区版(Community)和终极版(Ultimate),后者需要付费使用,相比起前者而言,多了很多Java EE的支持,幸运的是,我们不需要使用这些貌似很牛逼其实无用的功能,用社区版就好了。下载后安装。

    随后修改build.gradle为:

    1. version '1.0-SNAPSHOT'
    2. apply plugin: 'java'
    3. sourceCompatibility = 1.8
    4. targetCompatibility = 1.8//新增
    5. repositories {
    6. mavenCentral()
    7. }
    8. dependencies {
    9. compile 'io.vertx:vertx-core:3.4.2'//新增 vert.x core的依赖
    10. }
    11. //以下部分新增
    12. jar {
    13. manifest {
    14. attributes "Main-Class": "io.example.Main"//指定Main函数所在的类
    15. from {
    16. configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    17. }
    18. }

    然后我们在src/main/java/io/example目录(是的,您需要新建io和example两级文件夹)下新建两个java文件,分别是Main.javaMyFirstVerticle.java,代码如下:

    Main.java

    MyFirstVerticle.java

    1. package io.example;
    2. import io.vertx.core.AbstractVerticle;
    3. /**
    4. * Created by chengen on 26/04/2017.
    5. */
    6. public void start() {
    7. vertx.createHttpServer().requestHandler(req -> {
    8. req.response()
    9. .putHeader("content-type", "text/plain")
    10. }).listen(8080);
    11. }
    12. }

    随后打开浏览器,在浏览器的地址栏中输入:http://localhost:8080/ 便可看到熟悉的Hello World!啦。

    我们也可以使用Launcher来替代Main类,这也是官方推荐的方式,修改build.gradle如下:

    然后在src/main/java/io/example目录下新增MainVerticle.java文件,代码如下:

    1. package io.example;
    2. import io.vertx.core.AbstractVerticle;
    3. /**
    4. * Created by chengen on 26/04/2017.
    5. */
    6. public class MainVerticle extends AbstractVerticle {
    7. public void start() {
    8. vertx.deployVerticle(MyFirstVerticle.class.getName());

    然后重新打包后执行,便可再次看到Hello World!。

    jar文件本质上就是一个zip文件,可以用打开zip的压缩工具解压,读者可自行解压拆开jar包,看看相关依赖的文件是否在里面。比如例子中的代码除了生成io.example.MyFirstVerticle.class和io.example.MainVerticle.class文件以外,还同时将依赖的io.vertx.core中的内容压入jar包。