• Maven--反应堆(Reactor)


    在一个多模块的 Maven 项目中,反应堆是指所有模块组成的一个构建结构。对于单模块的项目,反应堆就是该模块本身。但对于多模块项目来说,反应堆就包含了各模块之间继承与依赖的关系,从而能够自动计算出合理的模块构建顺序。

    模块间的依赖关系会将反应堆构成一个有向非循环图(Directed Acyclic Graph, DAG),各个模块是该图的节点,依赖关系构成了有向边。这个图不允许出现循环,因此,当出现模块 A 依赖于 B,而 B 又依赖于 A 的情况时,Maven 就会报错。

    一般来说,用户会选择构建整个项目或者选择构建单个模块,但有些时候,用户会想要仅仅构建完整反应堆中的某些个模块。换句话说,用户需要实时地裁剪反应堆。

    Maven 提供了很多的命令行选项支持裁剪反应堆,输入  mvn -h 可以看到这些选项:

    可以使用  -pl 选项指定构建某几个模块

    1 mvn clean install -pl moduleA,moduleB,...

    使用 -am 选项可以同时构建所列模块的依赖模块

    mvn clean install -pl moduleA -am

    如果 moduleA 依赖了 moduleB,这里就会构建 moduleB 和 moduleA

    使用 -amd 选项可以同时构建依赖于所列模块的模块

    mvn clean install -pl moduleA -amd

    如果 moduleB 和 moduleC 依赖于 moduleA,这里就会构建 moduleA,moduleB 和 moduleC

    使用  -rf 选项可以在完整的反应堆构建顺序基础上指定从哪个模块开始构建

    mvn clean install -rf moduleA

    如果该完整的反应堆构建顺序中,moduleA 位于第三,那么就从moduleA 开始构建一直到最后的模块,moduleA 之前的模块不构建。

    在 -pf  -am 或者  -pl  -amd 的基础上,还能应用 -rf 参数,以对裁剪后的反应堆再次裁剪。

    mvn clean install -pl moduleA -amd -rf moduleB

    如果 moduleB 和 moduleC 依赖于 moduleA,这里就会构建 moduleB 和 moduleC

  • 相关阅读:
    UI涂鸦板设计代码
    UI简单计算器设计代码
    用户需求、己、竞争对手的关系
    总结一下,以软件开发生命周期来说明不同的测试的使用情况
    谈软件工程和计算机科学的区别
    有人认为,”中文编程“是解决中国程序员编程效率的秘密武器,请问它是一个“银弹”吗?
    安装Eclipse SVN插件
    UI中横屏竖屏切换的一些方法(转)
    Object-C总结
    js备忘录
  • 原文地址:https://www.cnblogs.com/microcat/p/7243074.html
Copyright © 2020-2023  润新知