我有一个Maven项目,其中包含“核心”和“网络”部分。我试图将其转换为多个模块。Maven多模块项目中的自动装配依赖关系
我已经采取了“网络”包,并把它们放到新的项目。我已经将核心项目添加为依赖项,并且我可以在Eclipse中引用它的类。当我构建它时,“核心”项目在“web”项目中的WEB-INF\lib
中正确显示。
在“web”项目中,来自“核心”项目的类为@Autowired
时出现问题。
在这种特殊情况下,我将服务类从“核心”自动装配到“web”项目中的一个Web服务类中。如果我在我的“web”应用程序配置中将核心服务所在的软件包添加到我的context:component-scan
中,它会找到该服务,但是该服务会引用一个存储库,该存储库引用一个实体,该实体正在寻找一个实体管理器工厂,已经在我的“核心”项目的应用程序上下文中进行了配置。
所以看来,“核心”项目中的context:component-scan
也许没有发生?或者,也许所选的课程没有提供给“网络”项目?
我对多模块项目是全新的,所以如果任何人都可以让我开始正确的方向来解决这个问题,我将不胜感激。
我在Eclipse中使用m2e和Run Jetty Run插件(如果有的话);然而,当我从命令行执行mvn jetty:run
时,我似乎遇到同样的问题。
感谢您的回复。这似乎工作。如果你不介意的话,还有一个很快的问题......这是这种模块化的普遍接受的解决方案吗?我所要问的唯一原因是因为如果我要分发我的“核心”项目,有人必须至少知道我的应用程序上下文的名称才能正常工作。这对我来说不是问题,因为这都是内部的,但我想以最脆弱的方式做到这一点。是否存在应该在其他模块中加载的应用程序上下文的特定命名约定? – Luke 2013-04-08 14:38:40
不确定是否会导出我的应用程序上下文。最好提供一个很好的例子,说明如何用核心库公开的主要服务创建这样的上下文,并让消费者处理它。我认为这与明确记录的API一起应该做到这一点。 – 2013-04-08 15:27:32
太棒了!再次感谢。 – Luke 2013-04-08 17:25:56