在不构建子模块的情况下安装父 POM

Posted

技术标签:

【中文标题】在不构建子模块的情况下安装父 POM【英文标题】:Install parent POM without building Child modules 【发布时间】:2012-03-19 00:27:36 【问题描述】:

我在一个 Maven 项目中有一个父 POM,结构如下:

             parent
               |
        ---------------
        |             |
      child1       child2

我想在本地 REPO 中安装 "parent" 的 POM,以允许 child1 进行一些我在 dependencyManagement 中所做的更改,但是 我无法进行常规的“全新安装”,因为 “child2” 已损坏且无法构建。

使用 maven 执行此操作的正确方法是(除了转到父 pom 并评论 “child2” 模块)。

【问题讨论】:

【参考方案1】:

在 mvn 命令中使用“-N”选项。

来自mvn -h

-N,--non-recursive 不要递归到子项目中

【讨论】:

“-N”或“--non-recursive”选项表示不递归到子项目中。【参考方案2】:

虽然 Guillaume 确实是正确的并且这是正确的选择,但我个人建议将您的父级保留为单独的模块。

我发现继承的最佳方法如下:

aggregator
|- module1/ (extends parent)
| |- pom.xml
|- module2/ (extends parent)
| |- pom.xml
|- parent/
| |- pom.xml
|- pom.xml

这样您始终可以只安装父级,mvn clean install 无需额外选项。

您还可以将父级放在聚合器之外,以便在更多项目之间重复使用它。

将父级和聚合器保持为两个独立的东西有很多好处。但最终,您会选择最适合您的项目/环境的。

【讨论】:

我在这个问题上苦苦挣扎了好几个小时,发现有些项目是这样做的,比如 apache sling、JackRabbit 和 Artifactory。 它将 maven 模块继承(依赖项、属性等)与批处理构建(子模块)隔离开来。 这被认为是最佳做法吗?关于这种方法的任何博客或其他内容? @ArtB 你有没有偶然发现这样的文章? @MaximilianSchulz:正如他们所说,没有完美的世界......这只是一种选择。

以上是关于在不构建子模块的情况下安装父 POM的主要内容,如果未能解决你的问题,请参考以下文章

如何在不删除子元素的情况下删除包装器(父元素)?

如何在不渲染子组件的情况下根据子组件大小更改 React 父组件大小?

Automake:如何在不安装的情况下构建共享库

如果我使用 pip 安装模块,我如何确保其他人可以在不安装该模块的情况下运行我的程序?

在不安装的情况下使用/加载新的python模块

如何在不使用 npm 的情况下安装 node.js 模块?