【问题标题】:Debug Vert.x app using Gradle and VS Code使用 Gradle 和 VS Code 调试 Vert.x 应用程序
【发布时间】:2020-04-06 23:34:30
【问题描述】:

我正在使用一个 Vert.x 应用程序,该应用程序的 Verticle 是用 Java 编写的。该应用程序使用 MainVerticle 启动并使用 Gradle 进行构建。我使用 VS Code 作为 IDE/代码编辑器,因为它非常简单且轻量级。然而,找到调试我的代码的方法真的很困难。如何配置 build.gradle.vscode/launch.json 以启用调试选项?

到目前为止,这是我在 build.gradle 文件中启动的命令:

run {
  args = [ 'run', mainVerticleName, "--redeploy=$watchForChange", "--launcher-class=$mainClassName", "--on-redeploy=$doOnChange" ]
}

【问题讨论】:

    标签: java visual-studio-code vert.x vscode-debugger


    【解决方案1】:

    我正在为 Java 开发人员使用 VS Code,我的微服务使用 Eclipse Vertx.io。 maven 很容易配置。使用 maven 创建 vertx 项目并修改它自己的用法。

    我已经修改它并得到了类似的项目(不是eaxact无法显示完整代码)

    包 com.test.service;

    import io.vertx.config.ConfigRetriever;
    import io.vertx.core.AbstractVerticle;
    import io.vertx.core.DeploymentOptions;
    import io.vertx.core.Promise;
    
    public class Application extends AbstractVerticle {
    
      @Override
      public void start(Promise<Void> startPromise) throws Exception {
        ConfigRetriever retriever = ConfigRetriever.create(vertx);
        retriever.getConfig(
            res -> {
              try {
                if (res.failed()) {
                  .....
                } else {
                  startPromise.complete();
                  vertx.deployVerticle(
                      new TestServiceVerticle(),
                      new DeploymentOptions().setConfig(res.result()));              
                }
              } catch (RuntimeException e) {
                ...
                startPromise.fail(e.getMessage());
              }
            });
      }
    }
    

    Pom.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>test</groupId>
      <artifactId>test</artifactId>
      <version>1.0.0-SNAPSHOT</version>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
        <maven-shade-plugin.version>2.4.3</maven-shade-plugin.version>
        <maven-surefire-plugin.version>2.22.1</maven-surefire-plugin.version>
        <exec-maven-plugin.version>1.5.0</exec-maven-plugin.version>
    
        <vertx.version>3.8.5</vertx.version>
        <junit-jupiter.version>5.4.0</junit-jupiter.version>
    
        <main.verticle>test.test.service.Application</main.verticle>
      </properties>
    
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-stack-depchain</artifactId>
            <version>${vertx.version}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
    
      <dependencies>
        <dependency>
          <groupId>io.vertx</groupId>
          <artifactId>vertx-web-api-contract</artifactId>
          <version>${vertx.version}</version>
        </dependency>
        <dependency>
          <groupId>io.vertx</groupId>
          <artifactId>vertx-junit5</artifactId>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <version>${junit-jupiter.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-engine</artifactId>
          <version>${junit-jupiter.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>io.vertx</groupId>
          <artifactId>vertx-config</artifactId>
          <version>${vertx.version}</version>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler-plugin.version}</version>
          </plugin>
          <plugin>
            <artifactId>maven-shade-plugin</artifactId>
            <version>${maven-shade-plugin.version}</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                      <manifestEntries>
                        <Main-Class>io.vertx.core.Launcher</Main-Class>
                        <Main-Verticle>${main.verticle}</Main-Verticle>
                      </manifestEntries>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                      <resource>META-INF/services/io.vertx.core.spi.VerticleFactory</resource>
                    </transformer>
                  </transformers>
                  <artifactSet></artifactSet>
                  <outputFile>${project.build.directory}/${project.artifactId}.jar
                  </outputFile>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven-surefire-plugin.version}</version>
          </plugin>
          <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>${main.verticle}</argument>
              </arguments>
            </configuration>
          </plugin>
        </plugins>
      </build>
    
    
    </project>
    

    希望它会有所帮助。

    调试设置

         {
                    "type": "java",
                    "name": "Run service",
                    "request": "launch",
                    "mainClass": "io.vertx.core.Launcher",
                    "args": "run test.test.service.Application"
          }
    

    【讨论】:

    • 我只使用了你为launch.json发送的最后一个配置,现在vscode 1.45版可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2018-08-16
    • 2021-02-28
    • 1970-01-01
    相关资源
    最近更新 更多