考虑以下情况。我有两个名为“A”和“B”的Gradle(子)项目。 A定义了一些被B引用的类/接口。因此,B对A有编译依赖关系。现在A是一个Web服务器,应该在类路径上与B一起启动。 如何使用Gradle实现这一点?
当然,不可能将B作为编译依赖项添加到A中,因为这意味着A和B之间存在循环依赖关系。即使将B作为运行时依赖项添加到A中也不起作用,因为B中的编译错误会指出来自A的引用类不存在。 但为什么?
一种解决方案是将B中的代码移动到A中,但我真的想将该代码分开,因为稍后可能会有另一种我想要轻松交换A中的B的实现(例如通过在运行时类路径中交换jar包)。
我考虑的另一种解决方案是将B引用的A中的类分离到一个新模块中,并使A和B都依赖于该新模块。这听起来是有效的,但这将意味着将持久性层从A移到该新模块中,这感觉不对。
附加信息:A是一个具有持久性层、Web服务等的Spring Boot Web应用程序,B生成JAR。
我考虑的另一种解决方案是将B引用的A中的类分离到一个新模块中,并使A和B都依赖于该新模块。这听起来是有效的,但这将意味着将持久性层从A移到该新模块中,这感觉不对。
附加信息:A是一个具有持久性层、Web服务等的Spring Boot Web应用程序,B生成JAR。