【问题标题】:Maven: How to split an existing maven project into different projects?Maven:如何将现有的 Maven 项目拆分为不同的项目?
【发布时间】:2020-05-30 10:58:57
【问题描述】:

所以我有了这个包含数百个 API 和相应模型的大型 Spring Boot 项目。我被要求将它分成三个不同的模块。店面、订单管理系统和实用程序。根据我的基本计划,我对 Storefront 和 OMS API 进行了排序、过滤和移动到相应的项目。我将所有模型类移到 Utilities 中,创建了一个包,将此包添加到本地存储库,并将其作为 Storefront 和 OMS 的依赖项包含在内。进一步将这两个项目导出为可运行的 jar,并将所需的库复制到生成的 jar 旁边的子文件夹中。我这样做是因为子文件夹将包含 Utilities 的包,如果将来我必须从 Utilities 更新某些内容,我可以替换这个包并重新启动服务器。

一切正常,问题在于最终包装的大小。原始项目的 jar 大小为 175 MB。这三个项目都有相似的 .pom 文件。因此,所有三个项目都导出到几乎 175 MB 的大小。正如我所说,我在其他两个项目中包含了实用程序包。所以 Storefront 和 OMS 的子文件夹大小变成了大约 350 MB。

最后,我的问题是,有没有办法将一个 maven 项目拆分为 3 个不同的子项目,这些子项目可以独立构建和部署,这 3 个项目有没有办法共享一组可以远程存储的库和由它们独立访问以减小最终可运行 jar 的大小?

【问题讨论】:

    标签: java spring-boot maven maven-2 maven-3


    【解决方案1】:

    我认为这涉及到一些更深层次的问题。如果您的工件有 175MB 并且其中大部分是依赖项,那么您就有非常非常多的依赖项。

    所以首先,你应该问问自己,所有这些依赖项是否真的有必要。人们添加一个依赖项只是为了使用该依赖项中的一个简单类并不罕见。而且这种依赖比具有传递性负担。 175MB 确实需要对这一事实进行更深入的分析。

    接下来,如果您发现无法再真正减少依赖项,您可以将项目拆分为多个项目(就像您开始做的那样)。但是,大多数依赖项应该在只是一个生成的项目中。如果所有生成的项目都使用所有依赖项,那么这些项目都在做类似的,可能重叠的事情,这是不好的。

    【讨论】:

    • 确实,由于依赖关系,工件的大小为 175 MB,而且我只使用所有这些依赖关系中的一两个类也是如此。但它们很重要,我不知道是否还有其他方法可以从 Maven 依赖项而不是整个包中导入所需的类。
    • 不,但是如果您只需要一个类的简单方法,您可以自己实现它。如果你例如使用一个库只是为了缩进一个字符串,你可以很容易地编写自己的缩进方法。此外,Java 8 或 Java 11 允许您在没有库的情况下做很多事情,而在早期 Java 版本中需要库。
    猜你喜欢
    • 1970-01-01
    • 2011-01-27
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多