Vert.x命令行
可以使用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:
。