【问题标题】:How to execute Cucumber Spring Boot Packaged Jar from command line?如何从命令行执行 Cucumber Spring Boot Packaged Jar?
【发布时间】:2019-09-01 11:29:38
【问题描述】:

我对 cucumber-jvm 世界还很陌生。试图将 cucumber spring boot 应用程序打包为 Jar。应用程序在 Eclipse 中运行良好。但是当我打包为可执行 jar 时,它会因异常而失败:

主线程异常,未找到后端模块。确保您在 CLASSPATH 上有后端模块。请帮忙。谢谢。

【问题讨论】:

  • 类路径中是否有像 cucumber-java、cucumber-core 等的 jar?在 cucumber.runtime 包中找不到 Backend.java 的实现时会引发此错误。请参阅第 56 行,github.com/cucumber/cucumber-jvm/blob/v2.4.0/core/src/main/java/…
  • 是的,我在类路径上有 cucumber-java, cucumber-core 1.2.5。我可以在 cucumber.runtime 包中看到 JavaBackend 类。

标签: spring-boot cucumber cucumber-jvm cucumber-java spring-boot-gradle-plugin


【解决方案1】:

发件人:https://github.com/cucumber/cucumber-jvm/issues/1320

SpringBoot 使用嵌套的 jar 结构,需要使用 ApplicationContext.getResources 才能透明地访问它。您必须创建自己的 Cucumber 运行时实例,并为其提供使用 ApplicationContext 的类加载器和资源加载器。

【讨论】:

    【解决方案2】:

    使用 Gradle,将 Cucumber 工件(即功能、步骤实现等)放入子项目中,例如 my-cucumber-tests,与 Spring Boot 应用程序分开。

    然后在 Spring Boot 应用的build.gradle,添加:

    bootJar {
      // make backend, features, and steps available to Cucumber at runtime
      requiresUnpack '**/my-cucumber-tests-*.jar', '**/cucumber-java-*.jar'
    }
    

    【讨论】:

    • 您能详细说明一下吗?这个子项目到底有什么,“主”项目中还有什么?
    • my-cucumber-tests 子项目包含 Cucumber 功能、步骤实现等。main 项目理想情况下(尽管我们还没有达到理想)包含 main 函数和其他所有内容那是服务器相关的。理想情况下,关注点分离:一个子项目是与服务器相关的代码,另一个子项目是与 Cucumber 相关的代码。
    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2018-05-26
    • 1970-01-01
    • 2012-02-08
    • 2012-01-01
    相关资源
    最近更新 更多