Vert.x命令行

时间:2020-01-09 10:47:11  来源:igfitidea点击:

可以使用vertx命令从命令行运行Vert.x。 vertx命令可以直接从命令行启动Vert.x并向其部署一个顶点。这意味着我们不必创建Vertx实例并以编程方式在其上部署顶点。

在某些情况下,Vert.x命令行非常方便。例如,Vert.x命令行使在相同的" Vertx"实例中轻松部署以不同编程语言实现的顶点成为可能。这使Vert.x成为真正的多语言平台。

将Vert.x bin目录添加到路径环境变量

在Vert.x命令行运行之前,我们必须已安装Vert.x(下载并解压缩到所需目录)。

安装Vert.x时,将vertx-install-dir / bin添加到Path环境变量中。这就是所需要的。 " vertx-install-dir"部分应替换为安装Vert.x的实际目录。

测试Vert.x命令行

vertx-install-dir / bin添加到path环境变量后,打开命令提示符并运行以下命令:

vertx -version

如果正确安装了Vert.x,我们应该会看到类似以下的输出:

3.0.0

这是我们已安装的Vert.x的版本。

部署Java Verticle

要通过Vert.x命令行在Vert.x上部署(运行)Verticle,必须使用vertx run命令。在该命令的" vertx run"部分之后,我们必须编写要部署的Verticle的完全合格的类名。这是一个Vert.x命令行Java verticle部署示例:

vertx run com.Hyman.vertx.MyVerticle

该命令运行名为com.Hyman.vertx.MyVerticle的Java verticle类。

要部署一个Verticle类,我们必须从已编译类的根目录中运行" vertx run classname"命令,以部署该Verticle。因此,类的根目录将成为用于部署verticle的类路径。查找verticle类时,无论从哪个目录运行vertx run命令,都会自动将其添加到类路径中。

我们还可以运行JAR文件中的Java verticle类。这是Vert.x命令查找的方式:

vertx run com.Hyman.vertx.MyVerticle -cp MyVerticle.jar

更长的类路径

有时,我们需要一个包含多个目录或者JAR文件的类路径。在这种情况下,我们可以提供一个普通的类路径字符串作为-cp参数值。类路径字符串中的每个条目(目录或者JAR文件)必须用分号(在Windows上)或者冒号(在Unix / Linux上)分隔。这是一个更长的类路径示例:

vertx run com.Hyman.vertx.MyVerticle -cp MyVerticle.jar;SomeUtilLib.jar

本示例在类路径中包含两个用分号分隔的JAR文件。

在脚本中构建类路径

如果类路径很长,则命令行可能会很长,因此很难在文本编辑器中阅读。相反,我们可以将类路径构建为环境变量,每行一个条目,然后在命令行中使用该环境变量。我将向我们展示如何在Windows和Linux中执行此操作。

首先是Windows .cmd脚本:

set MY_CP=build\classes
set MY_CP=%MY_CP%;lib\util-1.jar
set MY_CP=%MY_CP%;lib\util-2.jar
set MY_CP=%MY_CP%;lib\util-3.jar

vertx run com.Hyman.vertx.MyVerticle -cp %MY_CP%

将此脚本另存为run.cmd,我们可以从Windows命令行执行它。请注意,脚本是如何建立一个名为" MY_CP"的环境变量,然后将该环境变量用作" -cp"开关的参数值。

这是相同脚本的Linux版本:

JAVA_HOME=/mystuff/java/jdk1.8.0_60
export JAVA_HOME

MY_CP=build/classes
MY_CP=$MY_CP:lib/util-1.jar
MY_CP=$MY_CP:lib/util-2.jar
MY_CP=$MY_CP:lib/util-3.jar

/mystuff/vertx/vert.x-3.0.0/bin/vertx run com.Hyman.vertx.MyVerticle -cp $MY_CP

首先,请注意该脚本创建了一个JAVA_HOME环境变量。 Vert.x似乎需要将此环境变量设置为在Linux上运行。可能是因为Vert.x使用Java SDK来运行Vert.x平台以及Java SDK中的某些其他工具。确保JAVA_HOME指向Java SDK的安装目录。

其次,脚本会像Windows版本一样构建一个名为" MY_CP"的变量(尽管代码看起来有所不同)。请注意,将/用作目录分隔符,并将:用作类路径条目分隔符。

第三,该脚本运行Vert.x,并将MY_CP变量作为-cp开关的参数值传递。请注意,命令行中如何包含" vertx"脚本所在位置的完整路径(在Vert.x安装目录中)。通过使用指向其位置的完整路径来引用vertx命令,我们无需将vertx命令添加到path环境变量中(我仅在Linux而非Windows上对此进行了测试)。

部署使用其他语言编写的顶点

正如我在Vert.x简介中提到的那样,Vert.x是一个多语言平台。这意味着我们可以部署用Java以外的其他语言编写的verticle。我们甚至可以将所有这些顶点部署到Vert.x的同一运行实例中。

这是部署用JavaScript编写的Verticle的示例:

vertx run my-verticle.js

如我们所见,我们只列出了顶点的JavaScript文件的名称,Vert.x将对其进行部署。对于其他语言(如Ruby,Python等),它的工作原理相同。Vert.x会根据文件扩展名猜测文件所用的语言。

如果愿意,我们可以明确告诉Vert.x文件使用哪种语言。如果部署以Groovy或者Scala编写(但已编译成Java类)的类文件,则这可能会很有用。我们可以通过在文件名前加上语言来告诉Vert.x语言,如下所示:

vertx run javascript:my-verticle.js

注意文件名前面的javascript: