【问题标题】:Is there a way to use different Repository for a specific maven module project?有没有办法为特定的 Maven 模块项目使用不同的存储库?
【发布时间】:2020-10-22 21:07:20
【问题描述】:

我有一个采用以下结构的 Maven 多模块项目。我们的项目在 GitHub 公司页面。

我打算将 maven 模块项目之一公开以使其开源。但是,由于 maven 多模块项目结构,它需要在文件系统的父项目层次结构下,不是吗?

我想做的是为 publicModule2 创建一个单独的存储库并将其推送到公共存储库。这将是一个开源项目。其余的将保持不变。有什么方法可以在不破坏 maven 多模块项目结构的情况下做到这一点?

-- Maven 父项目

  • --commonsModule
  • --cusomModule1
  • --cusomModuleN
  • --publicModule2

P.S.如您所知,当您将其从模块中删除时,它们不会每次都编译在一起,我不希望这样。如果没有模块结构,我已经分离了另一个项目,但我不为这个项目寻找那个。请在您的回复中考虑这一点

【问题讨论】:

    标签: java git maven


    【解决方案1】:

    如果您认真考虑将其开源,包括为人们提供一种简单、可重现的构建方式。如果需要将其构建为他们无权访问的更大项目的一部分,他们将无法这样做。

    Git submodules 可以满足您的需求。您需要将 public 设为原始父级的子模块。

    从文档来看,这个特性是在什么时候使用的

    您希望能够将这两个项目视为独立的,但仍然是 能够从另一个内部使用一个。

    但是我强烈主张将项目分开,以便可以独立构建公共项目。

    【讨论】:

    • 谢谢@Michael。就我而言,子模块中的任何其他项目都没有依赖关系。我已经能够单独构建子模块。我刚刚浏览了 Git 子模块。听起来 Git 子模块将解决我的问题。我不想在整体解决方案中破坏多模块结构,以查看每次编译中该最新子模块是否有任何重大变化。
    • 因为在那个项目 pom 我删除了 部分,当我编译父级时它仍然编译所有。
    • After all, if we wish to share all the configuration with our submodules, in their pom.xml files, we'll have to declare the parent 。我不打算从父模块到子模块共享一些东西。所以,它会完全独立,对吧?我错过了一个缺陷吗?
    • @DavutGürbüz 通常,以这种方式构建 Maven 项目的主要好处是您可以轻松地从父项目继承配置。如果您的项目是完全不同的并且不依赖于父项目,那么您并没有真正使用多模块设置的任何好处(至少对于这个模块)。所以提出了一个问题,为什么不把它移到一个独立的项目中,并在你现有的项目中添加一个依赖项。
    • 它就像我希望的 git 子模块一样工作。我刚开始从空仓库克隆,它导致了一些错误的 git 索引创建,但 SO 又帮助了我一次 stackoverflow.com/a/35778105/413032
    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2012-02-22
    • 2010-11-28
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多