我的情况有些复杂,我不确定设置 Maven 环境的最佳方法是什么。
我正在编写一个框架来允许为特定系统创建测试。该系统可以托管各种应用程序,并且我对每个应用程序都有一组测试,我想将它们与框架分开(它处理“测试”的一般概念,以及消息发送/接收等) . 此外,该框架提供了一个通用 UI,因此可以将其构建为战争并进行部署,从而允许您运行和配置测试。
我目前正在做的是将框架构建为 jar 和 war,将框架列为每个应用程序测试套件中的依赖项,并使用覆盖拉入所有框架代码,以便每个套件都可以构建自己的 war 进行部署。这太恶心了。
我想要的是能够指定(可能通过配置文件)在框架中构建哪些测试套件,并最终得到一个包含指定套件的单个 framework.war 文件。尝试为此构建 pom 时,我一直遇到循环依赖,因为:
- 要构建测试,测试项目必须依赖于框架
- 要拉入指定的测试 jar,框架必须依赖于那些测试项目
我尝试过的事情:
- 制作框架的测试套件子项目:
- 这不起作用(我认为)我无法将最终结果打包为战争(仅用于聚合器项目的 pom 打包)
- 将测试 .jars 列为系统依赖项:
- 这行得通,但是必须手动指定 jar 的路径很麻烦
- 将测试作为 java 包放入框架中,并通过过滤器只编译你想要的:
- 在技术上是可行的,但我真的更喜欢将逻辑分离到单独的 Maven 项目中,因为每个测试套件也可以配置,并且我想将所有配置保留在框架 pom 之外
理想的情况是父项目 pom 将:
- 无需测试即可编译框架
- 编译指定的测试套件
- 重建框架 .war,包括指定的测试套件 jars
我不确定这是否可能和/或什至可取,但这对我来说似乎是最好的解决方案。提前感谢您对组织此项目的任何建议。