有没有办法将多模块 Maven 项目拆分到不同的 Git 存储库中?

问题描述

我目前正在开发两种产品。其中之一是我想免费向公众提供的开源库。然而,另一种产品是付费的和闭源的,但使用该库作为依赖项。这两个项目在同一个 Maven 项目中,(但只是父项目的不同子模块)。目前,我有一个包含两者的 Git 存储库,但我想分别容纳库和付费产品,同时仍然保留它们是同一个 maven 项目的一部分。有什么好的方法可以实现这一目标吗? (我知道我可以使用单独的 Maven 项目创建另一个单独的 Git 存储库,但是,我想允许它,这样我就可以在使用 mvn package 时构建两个项目并非常有效地在两边编写代码)。>

解决方法

你说:

我知道我可以使用单独的 Maven 项目创建另一个单独的 Git 存储库

而且,正如@khmarbaise in a comment 所建议的那样,最简单的方法是将开源组件分离到自己的存储库中,并像使用任何其他依赖项一样使用它。

我想允许它,这样我就可以在使用 mvn package 时构建两个项目

如果这是一个优先事项,您可以继续将单独的项目视为闭源项目的 Maven 模块。使用 <module>../clone-directory-for-open-source-module</module>add it as a Git submodule 之类的内容引用结帐。

您需要确保该模块独立构建,以及在组合项目中构建,并且您的发布过程可能会更复杂。

非常高效的两边写代码

紧密耦合开发的一个风险是,您将在开源组件中做出孤立无意义的更改。这可能是也可能不是问题,具体取决于第三方对该库的贡献程度。