在Maven中使用父模块共享代码和配置
在我的项目中,我有两个模块在Maven中使用父模块共享代码和配置,maven,inheritance,multi-module,Maven,Inheritance,Multi Module,在我的项目中,我有两个模块(A,B)依赖于公共模块C。 我希望A,B共享公共配置,例如存储库配置、插件配置等。为了实现这一点,C被设置为父pom,并且A,B从中继承(不需要聚合,因此C不引用A,B) 然而,C本身包含一些java代码,以及单元测试。现在,如果我在C内部运行mvn测试,则不会执行任何操作。据推测,pom-打包的模块不应该包含任何代码 上述配置是否存在严重缺陷?在Maven项目中,非常典型的模式是有一个名为“parent”的模块,该模块保存您常见的Maven特定配置、概要文件、属性、
(A,B)
依赖于公共模块C
。
我希望A,B
共享公共配置,例如存储库配置、插件配置等。为了实现这一点,C
被设置为父pom,并且A,B
从中继承(不需要聚合,因此C
不引用A,B
)
然而,C
本身包含一些java代码,以及单元测试。现在,如果我在C
内部运行mvn测试
,则不会执行任何操作。据推测,pom
-打包的模块不应该包含任何代码
上述配置是否存在严重缺陷?在Maven项目中,非常典型的模式是有一个名为“parent”的模块,该模块保存您常见的Maven特定配置、概要文件、属性、依赖版本等。这就是Maven方式(TM) 该结构如下所示:
|-- parent
|-- common
|-- module-a
|-- module-b
因此,common、module-a和module-b都依赖于父级,module-a和module-b依赖于common
请参阅此优秀资源:
注意,就目录结构而言,“父”可以是其子模块的同级。不要求目录结构层次结构与模块的层次结构相匹配。谢谢,Noahz!我有点害怕听到它。至少在理论上,你知道为什么父模块和公共模块不能是同一个模块吗?这里有什么根本问题吗?单一责任原则。没有技术上的原因。我有相同的项目结构,但我不想产生三个不同的JAR(公共、模块a和模块b),我只想构建模块a和模块b,并将共同的代码附加到两者。有没有办法做到这一点?