gpt4 book ai didi

build - 对多项目 Maven 项目的惰性依赖

转载 作者:行者123 更新时间:2023-12-01 08:17:45 24 4
gpt4 key购买 nike

我们正在考虑使用 Maven 进行大型多项目构建,为了让您了解规模,一些子项目有几百万行代码。

理想的结构应该是这样的:

  • 项目A
    • 模块1
    • 模块2
  • 项目B
    • moduleAlpha(依赖于 moduleBeta)
    • moduleBeta(取决于 projectA:module1)
  • ...

其中每个模块实际上是一个 Maven 子项目,并且依赖项并不总是在 Artifact 级别(即 jars),而是导致子项目根据需要进行编译。

添加一个共同的项目根允许表达所描述的依赖关系,例如:

  • 项目根目录
    • 项目A
      • 模块1
      • 模块2
    • 项目B
      • moduleAlpha(依赖于 moduleBeta)
      • moduleBeta(取决于 projectA:module1)
    • ...

但强制​​您从项目根目录构建。请记住,这是一个非常大的项目,完整构建并不总是可取的。

大多数团队在 projectX 级别工作,有些甚至在 moduleX 级别工作。

有时我们需要针对生成的 Artifact (即 module1 生成的 jar)进行构建,有时我们希望从源代码进行构建。

我看过 reactor 插件,它允许您从某个点恢复构建或仅构建依赖项。但它看起来非常手动(尽管它在某些情况下非常有用)。

我描绘的是某种类型的 Artifact 存储库,它在需要时构建 Artifact 。例如,使 projectA 成为 projectB 引用的 Artifact 存储库。当您出于某种原因需要重建 projectA 的 Artifact 时,您可以删除 jar。

类似的东西是作为 Maven 的一部分还是作为插件实现的?如果不可行,实现是否可行?

最佳答案

What we need is to sometimes build against a generated artifact (that is the jar produced by module1), other times we want to build from the source code.

我在这里没有看到任何特别的问题:

  • 当您想针对二进制依赖项(jars)构建时,只需构建您正在处理的 Artifact (并让 Maven 解析和使用二进制依赖项)
  • 当您想针对源代码构建时,使用 react 器构建和高级 react 器选项,例如构建 moduleAlpha 和 moduleAlpha 的依赖项:

    mvn -pl moduleAlpha -am

What I picture is some type artifact repository that builds the artifact when it is required. For example, making projectA an artifact repository that projectB references. When you for some reason need a rebuild of projectA's artifact, you could just remove the jar.

我不确定您在说什么,删除 JAR 听起来不是个好主意。

您需要的是一个持续的构建过程,尽可能频繁地构建整个项目,以生成所有模块的快照并将它们部署到公司存储库中。那只是要走的路。

为了尽可能快地构建,我会考虑使用 Maven 3.x 和 parallel builds选项。

关于build - 对多项目 Maven 项目的惰性依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com