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

Posted

技术标签:

【中文标题】有没有办法将多模块 Maven 项目拆分为不同的 Git 存储库?【英文标题】:Is there a way to split a multi-module Maven project into different Git repositories? 【发布时间】:2021-02-05 16:36:24 【问题描述】:

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

【问题讨论】:

将开源部分分离到一个单独的存储库(git)中并单独构建。在您的闭源项目中将其用作通常的依赖项。最简单的方法... 【参考方案1】:

你说:

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

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

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

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

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

两面都写代码非常高效

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

【讨论】:

以上是关于有没有办法将多模块 Maven 项目拆分为不同的 Git 存储库?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Maven2 将多模块项目构建到单个 jar 中

06 Maven拆分聚合项目

转帖:maven maven项目构建ssh工程(父工程与子模块的拆分与聚合)

Maven -- 分模块开发与设计 & 分模块开发示例(拆分POJO & 拆分DAO)

maven项目的不同编写格式

使用python将多页pdf文件拆分为多个pdf文件?