2013-03-22 161 views
0

管理版本依赖关系的最佳方式是什么?管理版本依赖关系

通常我会创建一个超级POM(不是父级POM),我会在超级POM中声明所有的依赖关系。所以我的所有项目都可以将POM引用到依赖关系中。优点是我所有的依赖都是由中央POM控制的。

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

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

我在Maven有经验,但不是专家。任何好的建议吗?... 预先感谢 约瑟夫

+0

签出版本插件。 http://mojo.codehaus.org/versions-maven-plugin/ – 2013-03-23 10:56:56

回答

2
  • 把所有的版本在父POM的dependencyManagement。 (就像现在这样做,这就是为什么依赖管理存在的原因)
  • 要跟踪旧版本:在SCM中使用标签。
  • settings.xml不在项目的一部分!它在那里包含关于构建环境(即不是项目)的属性和数据。
  • 不要混合不同项目的依赖关系。这似乎是一个非常糟糕的想法(这意味着如果你为某个特定的客户更新了一个广泛使用的依赖项(比如hibernate):它将针对你的所有项目进行更新,因此你将不得不重新验证你的所有项目新版本的休眠)

只是一个小问题,你在版本控制你的settings.xml和版本控制父pom之间有什么区别?

+0

我们的产品由多个功能块组成。并非所有客户都可能需要所有功能块。这就是为什么jar依赖版本需要外部化。对于下一个客户端,一些功能块和代码库可能根本不会改变。所以我想找到合适的平衡。回答你的问题:没有区别 – 2013-03-23 00:34:12

+0

让我们说我们今天将产品发布给客户1,明天发布给客户2。我必须向client1发布补丁后的第二天。对于客户端2来说,下一个版本将会在一年之后,几乎没有新的构建块。我可能还必须发布前面发布的其他构建基块,因为我需要为新构建块进行版本更新。 – 2013-03-23 00:44:57

+0

我可以每次提到我的POM版本。如果代码库不变,我不想更新POM。我想保留每个客户端的版本分开。 – 2013-03-23 00:50:12