【问题标题】:Include maven dependency from target folder包括来自目标文件夹的 Maven 依赖项
【发布时间】:2017-12-05 15:53:49
【问题描述】:

我正在使用 Java Spring Boot 构建一个 Web 服务器,并使用 swagger-codegen 生成其余客户端供其他项目使用。

我想在我的集成测试中测试 rest-client,但是在我的项目的 POM 中包含一个存在于我的target 目录(在初始构建之后)的 maven 项目/jar 似乎是不可能的。

是否可以使用这种新依赖项构建这些测试?

【问题讨论】:

标签: java maven spring-boot swagger-codegen


【解决方案1】:

目标文件夹中的 jar 以两种方式到达该位置:

  • 已在打包阶段构建。
  • 它已由本地存储库中的插件复制到那里。

无论哪种方式,您都不应该使用目标中的文件。相反,将依赖项(真正的依赖项或 pom 中的项目)添加到服务器的测试依赖项中。在集成阶段运行您的测试。

【讨论】:

    【解决方案2】:

    我最终创建了一个多模块项目,一个用于服务器,一个用于其余客户端(取决于服务器)和一个用于集成测试(取决于其余客户端)

    每个模块都有自己的 pom 文件,并且有自己的构建/发布阶段。虽然我仍然无法让顶级 mvn clean install 工作(这是设置我们的 Web 应用程序的标准),但我能够在 bash 脚本中使用多个 mvn 命令进行协调安装。

    【讨论】:

      【解决方案3】:

      我需要做一些假设,如果我完全错了,请告诉我。

      我正在构建一个网络服务器

      表示您正在创建REST 服务?

      我想在我的集成测试中测试其余客户端

      意味着您(可能)对客户端进行了单元测试,并希望在集成测试中使用 - 和集成测试 - 这个客户端作为一个模块?

      我建议你

      • 为客户创建(如果尚未创建)单独的项目。
      • 将其安装到本地存储库,例如:mvn install
      • 将此已安装的工件作为依赖项添加到您需要的任何位置,例如在与服务的集成测试中。

      我真的不建议 从目标文件夹中包含 maven 依赖项,但不能说在某些情况下是否绝对必要...

      【讨论】:

        猜你喜欢
        • 2020-03-15
        • 2023-03-24
        • 2019-11-19
        • 1970-01-01
        • 1970-01-01
        • 2016-06-07
        • 2020-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多