【问题标题】: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 依赖项,但不能说在某些情况下是否绝对必要...