Maven 如何存储和检出使用组织范围POM的项目?

Maven 如何存储和检出使用组织范围POM的项目?,maven,parent,pom.xml,multi-module,Maven,Parent,Pom.xml,Multi Module,Eclipse有一个我正在使用的很好的特性—从SCM检出maven项目—它获取多模块项目的父pom,检出它,然后将其所有模块检出到本地工作站。它很容易使用,而且很干净。非常适合团队使用。它以分层的方式存储项目(我喜欢)。。。e、 g.-父pom是根目录,所有模块都位于父目录中的文件夹中 然而,现在我要添加另一个元素-一个组织范围的POM,用于很少更改的设置。我唯一感到困惑的是,这将如何改变我对其他(不相关)项目的结构,这些项目都使用组织范围的pom。我不想将其他超级模块列为公司母公司的“模块”,

Eclipse有一个我正在使用的很好的特性—从SCM检出maven项目—它获取多模块项目的父pom,检出它,然后将其所有模块检出到本地工作站。它很容易使用,而且很干净。非常适合团队使用。它以分层的方式存储项目(我喜欢)。。。e、 g.-父pom是根目录,所有模块都位于父目录中的文件夹中

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

我有没有办法让我的多模块父项目(带有POM包的项目)成为整个组织POM的一个模块,而不必在每个项目中有三个级别的文件夹?例如,我是否可以将pom存储在我的archiva存储库中,这样就可以使用依赖项来解决它(而不是实际将文件放在项目的根目录下)

如果我真的需要将组织范围内的pom作为我公司的每个多模块项目的根,我是否需要将我的项目从层次结构更改为平面结构(所有模块与父模块位于同一目录中)来实现这一点

为使用此结构的组织工作的人员通常如何存储和签出这些项目?我错过了什么?多模块项目(没有父pom)是如此干净和可用。添加另一层(超级pom)真是把我搞糊涂了


谢谢

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

您是否尝试为父pom链接设置空路径:

<relativePath></relativePath>


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

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

您是否尝试为父pom链接设置空路径:

<relativePath></relativePath>


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

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

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

我还没有尝试过任何东西。仍在构思它的工作原理。您可以从archiva存储库解析POM,这真是太神奇了。我必须在组织pom上进行mvn部署,将其放在我的repo上吗?此外,大多数公司是否只有一个用于发布的托管回购协议和一个用于快照的托管回购协议?我在考虑给每个部门(db人员、工程人员)自己的回购协议——然而,这会不会让事情变得过于复杂?此外,这意味着整个组织的pom将需要自己的回购协议,因为它不是特定于项目或部门的。您对此有何看法?如果文件不存在,是否应该解析为我指定的存储库(即使没有标记),或者这是绝对必要的?使用单个存储库更简单。我不能代表archiva或nexus,但在artifactory中,您可以允许不同团队在单个artifactory实例中访问他们自己的存储库,并在大多数团队只读的共享存储库中发布公司pom。然后,您可以在每个项目的父pom.xml文件中放置指向该存储库的直接链接,也可以创建一个包含所有存储库的视图,并在父pom.xml文件中放置指向该存储库的链接。为了降低复杂性,artifactory创建了一个虚拟存储库来访问所有内容