1

我从来没有完全理解我将如何/为什么要使用 Maven 模块(反应堆构建)。

我们有数十个库,我们在产品之间以及库之间共享(作为依赖项)。如果我们要切换到使它们成为 Maven 模块,我们将如何在 SVN 和我们的工作副本中进行设置?

Maven 模块真的需要是子文件夹吗?它们是否也需要成为 SVN 存储库中的子文件夹?

假设您只需要工作副本中的子文件夹,我想svn:externals可以使“util”库同时成为多个项目的模块。但是我读过很多关于使用的坏事,svn:externals因为没有什么可以阻止你修改外部代码,但它没有被跟踪。

有什么建议么?我错过了模块上的船吗?

4

2 回答 2

3

不......只有当子项目集成到父项目以创建更大的工件时,才应使用模块化项目,因此示例可能是企业项目,其中您的模块包含 EJB(服务器和客户端)、WAR、然后将它们组合成一个 EAR 文件。这种模块化只是为了方便起见,如果愿意,可以跳过。

在可重用库的情况下,使它们成为独立项目并将它们部署到共享存储库。然后必须在使用它们的项目中将它们作为依赖项引用。

于 2008-10-03T13:12:02.393 回答
1

我想这是颠覆的问题。这会迫使您创建用于分支的文件夹结构。其他版本控制系统允许在文件夹结构中不可见的情况下进行分支,这样可以更轻松地创建 Maven 模块。

我使用了一个包含 250 多个模块的产品,它们驻留在“逻辑”maven 模块中,仅表示一个功能区域。例如“CoreService”、“Utilities”和“Applications”。我们很高兴为此使用 maven 模块,因为我们可以确保所有 CoreServices 都使用某个版本的某个依赖项,并且所有应用程序都将某个 aspectJ 库编织到其中。

但是,对于您的解决方案:

subversion 中有一个功能可以让模块找到它的父级relativePath,它是标签中的一个parent标签。将子项目放在其父文件夹中的唯一原因是为了在构建父项目时可以将它们放入反应器中。子项目仍然可以单独构建(和安装)。

在 subersion 1.5 中还增强了对svn:externals允许相对 URL:s 的支持,在这种情况下也应该派上用场。

- 祝你好运,如果你找到解决方案,请在这里报告!

于 2008-10-03T21:54:49.907 回答