1

我通过 Vert.x 启动器创建了一个项目,使用命令mvn exec:java启动。

当我添加重新部署参数时,

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>${exec-maven-plugin.version}</version>
        <configuration>
          <mainClass>io.vertx.core.Launcher</mainClass>
          <arguments>
            <argument>run</argument>
            <argument>--redeploy=src/**/*.java</argument> <!-- just add this line -->
            <argument>${main.verticle}</argument>
          </arguments>
        </configuration>
      </plugin>

得到一个错误:

java.lang.Exception: classworlds configuration not specified nor found in the classpath
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:397)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

如何让这个 Vert.x 项目支持自动重新部署?

4

1 回答 1

1

exec:java目标在当前 VM 中运行应用程序。因此,java.class.path系统属性设置为启动 Maven 的类路径。

不幸的是,这是 Vert.x 重新部署模式用来确定应该作为分叉进程启动的 Vert.x 应用程序的类路径。这就是缺少类并打印此异常的原因。

作为一种解决方法,您可以切换到exec:exec目标和此配置:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>3.0.0</version>
  <configuration>
    <executable>java</executable>
    <commandlineArgs>-cp %classpath io.vertx.core.Launcher run --redeploy=src/**/*.java --on-redeploy="mvn compile" --launcher-class=io.vertx.core.Launcher ${main.verticle}</commandlineArgs>
  </configuration>
</plugin>
于 2020-11-26T10:07:20.583 回答