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

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

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

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

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

【问题讨论】:

    标签: java maven maven-2 pom.xml


    【解决方案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:正如他们所说,没有完美的世界......这只是一种选择。
    猜你喜欢
    • 2014-07-12
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2013-11-04
    • 1970-01-01
    • 2018-05-30
    • 2017-01-29
    相关资源
    最近更新 更多