maven 只用于java吗,java – maven – 用于接口的单独模块和使用Spring实现

我们正在开发Mavenizing我们的java项目,我们希望在每个模块的界面和实现之间建立一个干净的分离。

为了做到这一点,我们希望将每个模块分成两个子模块,一个用于由它们使用的接口和数据对象,另一个用于实现。

例如:

+commons

+commons-api

+commons-impl

模块的POM将被配置为使得模块不依赖于子模块。这样,一个模块的代码就不能“看到”另一个模块的实现细节。

我们遇到的麻烦,在哪里放我们的弹簧XML。

在我们的项目中,我们使用通配符导入来自动导入弹簧XML文件

< import resource =“classpath *:** / * - beans.xml”/>

这样,Spring XML的位置在运行时并不重要,因为所有的模块都被加载到同一个类加载器中,POM中的严格单向依赖规则不适用。

然而,在开发过程中,我们希望IDE – 我们使用Intellij IDEA来识别从Spring XML引用的实现类。

我们还希望IDEA识别在其他模块中定义的bean。

如果我们将弹簧XML放在API子模块中 – 它们不会“看到”impl子模块中的实现类。

如果我们把它们放在impl子模块中,它们的bean不会被其他模块“看到”。

可能配置IDEA项目来识别来自没有依赖关系的模块的弹簧XML,但是我们更喜欢我们的POM来保存所有项目结构信息,而不依赖于IDEA项目文件。

我们考虑创建一个第三个子模块来容纳Spring XML(也可能是hibernate xmls)。例如:

+commons

+commons-api

+commons-impl

+commons-config

外部模块将依赖于commons-api和commons-config,commons-config将依赖于commons-api和commons-impl,并依赖于commons-impl标记为“provided”(以防止传递性解析)。

然而,这似乎是一个复杂而尴尬的解决方案,我们认为必须有一个更简单的方法来实现与Maven和Spring的接口/分离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值