将maven模块重用为依赖项

时间:2011-04-07 10:43:47

标签: module maven dependencies

我希望能够将我的项目拆分为Maven子模块,并将其作为Maven依赖项重用于其他项目。

据我所知,子模块必须指定其父项目。这使得它们不适合作为依赖项重用。

这使得模块中的拆分远没那么有吸引力恕我直言。或者我错过了什么?

当我需要共享项目时,我倾向于在组件中拆分项目。否则,为什么要打扰?

有人可以详细说明吗?

是否可以声明一个未指定父模块的模块? 如果不能,你如何重构一个依赖项及其所有依赖项目?

欢呼声

3 个答案:

答案 0 :(得分:2)

relativePath只是构建时的一个提示。安装完所有模块和父级后,您可以将各个模块称为其他项目中的依赖项。

答案 1 :(得分:2)

  

据我从文件中了解到的那样   子模块必须指定它们   父项目。这使他们   不适合重复使用   的依赖关系。

指定父项目不会使模块不适合作为依赖项。大多数模块都有父pom,它定义了公共依赖项/插件和其他东西。例如,请参阅spring dependencies。

  

是否可以声明模块   没有指定它的父亲?

每个模块都是一个单独的maven项目。因此,它不需要父母。通常,在模块的分层组织中,每个模块位于folderand中,父pom位于模块的父文件夹中。父pom通常构建所有模块。

|
--- module 1
    |
    --- pom.xml
|
--- module 2
    |
    --- pom.xml
|
pom.xml <-- parent pom

如果没有父pom,则需要单独构建每个模块。

请参阅this SO讨论。

答案 2 :(得分:0)

父母poms和pom项目是有用的,毫无疑问。但是文档说你必须在模块中指定父级。因此,如果您想重用,比如说项目的服务器模块用于另一个项目,您怎么做呢?

|
--- server
     |
     --- pom.xml
|
--- client
     |
     --- pom.xml
|
--- webapp
     |
     --- pom.xml
|
--- Pom project 1
     |
     <modules>
        <module>../server
        <module>../client
|
--- Pom project 2
     |
     <modules>
        <module>../server
        <module>../webapp

通过上面的例子,根据doc,服务器项目应该将pom项目1指定为父项目,并将pom项目2指定为。

在这种情况下,如何处理模块和依赖概念的混合?