0

Eclipse 有一个我正在使用的不错的功能——从 SCM 中签出 maven 项目——它获取多模块项目的父 pom,将其签出,然后将其所有模块签出到本地工作站。它非常易于使用,而且非常干净。与团队一起使用很棒。它以分层方式(我喜欢)存储项目......例如 - 父 pom 是根,所有模块都在父文件夹中。

但是,现在我要添加另一个元素 - 一个组织范围的 POM,用于很少更改的设置。我唯一感到困惑的是,这将如何改变我的其他(不相关)项目的结构,这些项目都使用组织范围内的 pom.xml。我不想将其他 superpom 列为公司父级的“模块”,我只是希望它非常简单。

有什么方法可以让我的多模块父项目(带有 POM 包装的项目)实际上成为组织范围的 pom 的一个模块,而每个项目中没有三个级别的文件夹?例如,我可以将该 pom 存储在我的档案存储库中,以便可以使用依赖项来解决它(而不是实际将文件放在我的项目的根目录中)?

如果我实际上必须将组织范围的 pom 作为每个多模块项目的根,我是否需要将我的项目从分层结构更改为平面结构(所有模块与父级位于同一目录中)才能完成这项工作在我公司有吗?

为使用这种结构的组织工作的人通常如何存储和检查这些项目?我在这里想念什么?多模块项目(没有父 pom)非常干净和可用。添加另一层(超级超级 pom)真的让我很困惑!

谢谢!

4

2 回答 2

3

您无需在组织 pom 中列出模块,就可以将其作为父 POM 链接并使其继承通用设置。如果您将组织 POM 存储在档案、Nexus 或 Artifactory 等中,那么您只需要在您的 settings.xml 或每个项目的 pom.xml 文件中指向存储库。您不需要添加对组织 POM 文件的依赖项,因为父元素将为您组织该文件。

您是否尝试过为父 pom 链接放置一个空路径:

<relativePath></relativePath>

这应该使 maven 在存储库中而不是在文件系统中查找父 pom。

于 2012-03-19T05:32:05.940 回答
1

组织 pom(我将其称为公司 pom)应该作为通常的 maven 工件处理,这意味着它必须在 VCS 中,当然它需要通过 maven 发布插件发布。此外,公司应该只有一个发布存储库和一个用于 SNAPSHOT 的存储库。公司 pom 应该有它自己的存储库,因为它由 groupId、artifactId 和 version 标识,所以我可以简单地放入发布存储库中,并通过它的 GAV 坐标(groupId、artifactId、version)作为来自不同项目的父级引用。通常不需要 relativePath。多模块构建应该在没有相对路径的情况下工作(请注意“配置约定”范例)。

于 2012-03-19T08:30:48.213 回答