Java 如何解决Eclipse中的循环项目依赖关系。有没有办法只在运行时创建一个依赖项?
我有一个项目,基本上由2个模块组成。我有一个Eclipse工作区和两个java项目(maven),它们代表这两个模块 要更深入一点,请执行以下操作:Java 如何解决Eclipse中的循环项目依赖关系。有没有办法只在运行时创建一个依赖项?,java,eclipse,maven,circular-dependency,Java,Eclipse,Maven,Circular Dependency,我有一个项目,基本上由2个模块组成。我有一个Eclipse工作区和两个java项目(maven),它们代表这两个模块 要更深入一点,请执行以下操作: 项目1:核心模块(具有核心实现和API接口) 项目2:辅助模块(服务器) Project 2需要将Project 1作为依赖项,以便在编译时访问API接口。但问题是project1需要project2才能正常工作(不过这只是一个运行时要求) 因此,当我在每个项目中添加另一个项目作为依赖项时,会显示一个循环依赖项错误,因为Eclipse不知道以什
- 项目1:核心模块(具有核心实现和API接口)
- 项目2:辅助模块(服务器)
以更直观的方式解释。我需要的是:
- 项目2——编译过程取决于--->项目1
- 项目1——运行期间取决于--->项目2
但是,更重要的是:如果Project1不能在没有Project2的情况下使用,反之亦然,那么为什么它们是不同的项目呢?Eclipse可以处理循环项目依赖关系,但默认情况下,循环依赖关系将被报告为错误,原因很充分(将代码拆分为具有循环依赖关系的项目毫无意义) 您可以将两个项目的循环依赖项项目问题严重性从错误降低为警告,如下所示(不推荐):
因此,根据@JF Meier的评论,我找到了另一种方法来实现这一点。整个想法基本上是将项目2松散地耦合到项目1,允许项目2与其他实现交换,同时仍然是项目1工作的关键部分 为了解决循环依赖性问题,我刚刚创建了另一个项目,它将project1和project2设置为依赖性,并从那里启动project1。这解决了我的循环依赖性问题,一切正常 结果是:
- 项目0:启动程序启动项目1
- 项目1:核心模块(具有核心实现和API接口)
- 项目2:辅助模块(服务器)
- 项目1——不依赖任何东西
- 项目2--取决于--->项目1
- 项目0——取决于--->项目1和项目2
谢谢你一如既往的帮助 我不确定是否可以将Eclipse项目添加为Maven依赖项。Project2单独出现的原因是它是可交换的。在我的例子中,它是一个基于NanoHTTPD的服务器实现,但也包括使用Jetty、Spark或其他任何东西的其他实现。每个都有不同的稳定性和内存占用。这就是为什么在我的例子中允许使用不同的实现是有用的。关于你的第一条评论:我认为你所有的eclipse项目都是用Maven管理的。关于第二条评论:所以Project1实际上并不依赖于Project2,而是依赖于实现某些接口的某个项目(我猜)。因此,Project2与Project1没有运行时依赖关系。相反,有不同的可能组合。如果Project2对Project1有依赖关系,则应该能够启动Project2。Project1可能不需要了解Project2的任何信息。