Maven 管理依赖项的版本

Maven 管理依赖项的版本,maven,dependencies,Maven,Dependencies,管理依赖项版本的最佳方法是什么 通常,我会创建一个超级POM(不是父POM),并在超级POM中声明我的所有依赖项。这样,我的所有项目都可以引用POM来查找依赖项。优点是我的所有依赖项都由一个中心POM控制 但是,如果我们正在开发一些产品,年复一年地向不同的客户销售,而且这些产品的版本也会年复一年地更新。我将如何跟踪我发布给每个客户的产品的依赖版本?。。我不想每次需要更新依赖项版本时都不断更新POM 所以我想在我的设置xml中保留依赖项的版本,因为每个版本的属性和设置都可以更新或版本化 我对Mav

管理依赖项版本的最佳方法是什么

通常,我会创建一个超级POM(不是父POM),并在超级POM中声明我的所有依赖项。这样,我的所有项目都可以引用POM来查找依赖项。优点是我的所有依赖项都由一个中心POM控制

但是,如果我们正在开发一些产品,年复一年地向不同的客户销售,而且这些产品的版本也会年复一年地更新。我将如何跟踪我发布给每个客户的产品的依赖版本?。。我不想每次需要更新依赖项版本时都不断更新POM

所以我想在我的设置xml中保留依赖项的版本,因为每个版本的属性和设置都可以更新或版本化

我对Maven很有经验,但不是专家。有什么好建议吗?。。。 提前谢谢 约瑟夫
  • 将所有版本置于父pom的DependencyManager中。(正如您现在所做的,这就是dependencyManagement存在的原因)
  • 要跟踪旧版本:请在SCM中使用标记
  • settings.xml不是项目的一部分!它包含有关构建环境的属性和数据(即,不是项目)
  • 不要混合不同项目的依赖关系。这似乎是一个非常糟糕的主意(这意味着如果你为一个特定的客户定义了一个广泛使用的依赖项(比如hibernate):它将为你的所有项目更新。因此,你必须根据hibernate的新版本重新验证你的所有项目)

  • 还有一个小问题,对settings.xml进行版本控制与对父pom进行版本控制有什么区别?

    我们的产品由多个功能块组成。并非所有客户端都需要所有功能块。这就是jar依赖版本需要外部化的原因。对于下一个客户机,一些功能块和代码库可能根本不会改变。所以我想找到正确的平衡。回答你的问题:没有区别,让我们说我们今天向客户1发布产品,明天向客户2发布产品。第二天,我必须向client1发布一个补丁。对于客户端2,下一个版本将在一年后发布,并且没有多少新的构建块。我可能还需要发布我之前发布的其他构建块,因为我需要对新构建块进行版本更新。正如您所提到的,每次我都可以对POM进行版本更新。如果代码库没有改变,我不想更新POM。我想单独保留每个客户端的版本,“如果代码库没有改变,我不想更新POM”。在我看来,只要更改依赖项:您就不会构建相同的工件(即使代码库没有更改),因此更新依赖项需要更新pom(并对其进行版本化)签出版本插件。