2011-04-07 27 views
1

我希望能够将我的项目拆分成Maven子模块,并将它们重用为其他项目的Maven依赖项。重用maven模块作为依赖关系

正如我从文档了解,子模块必须指定他们的父项目。这使得它们不适合作为依赖关系重用。

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

我倾向于在需要分享项目时拆分组件中的项目。否则,为什么要麻烦?

有人可以详细说明吗?

是否有可能声明一个模块没有指定它的父级? 如何重构依赖项和所有依赖项目?

欢呼声

回答

1

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

1

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

指定父项目不会使模块不适合作为依赖项。大多数模块都有一个父pom,它定义了常见的依赖/插件和其他东西。例如,请参阅Spring依赖关系。

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

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

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

在没有父pom的情况下,您需要单独构建每个模块。

请参考this SO的讨论。

+0

父母poms和pom项目是有用的,毫无疑问。但文档说你必须在模块中指定父代。所以如果你想重复使用,为另一个项目说一个项目的服务器模块,你怎么做到的? ' | ---服务器模块 | --- pom.xml ---客户端模块 ' – nodje 2011-04-12 10:37:00

+0

@nodje。查看弹簧模块(弹簧芯或弹簧腹板)的POM文件。这些模块可以在任何项目中使用,并且具有* parent *声明。 – Raghuram 2011-04-12 10:46:48

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 

随着上述例子中,根据该文档,服务器项目应该指定POM项目1作为父母,和POM项目2为好。

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