假设我有两个项目A和B的maven中的多模块项目。取决于B.模块编译是否可以在依赖性测试结束之前发生?
如果我运行并行构建(mvn -T 2C ...),那么模块B将被编译,经过测试,然后模块A将被编译和测试。喜欢的东西:
乙编译 B测试 编译 一个测试
提速的事情,我想之前启动A的汇编(甚至测试)(以及实际中...)B的测试。
换句话说,maven中有没有一个选项允许在执行并行构建时使用相位粒度而不是模块角度?
假设我有两个项目A和B的maven中的多模块项目。取决于B.模块编译是否可以在依赖性测试结束之前发生?
如果我运行并行构建(mvn -T 2C ...),那么模块B将被编译,经过测试,然后模块A将被编译和测试。喜欢的东西:
乙编译 B测试 编译 一个测试
提速的事情,我想之前启动A的汇编(甚至测试)(以及实际中...)B的测试。
换句话说,maven中有没有一个选项允许在执行并行构建时使用相位粒度而不是模块角度?
对此的简单回答:不存在没有这样的选项。
较长的答案:
这将没有任何意义,事业运行测试编译代码后是这里的基础之一,以具有可靠的代码。
如果您进一步思考:让我们说可以做这样的事情。
您运行模块B的编译,并且让模块A也运行它的编译。所以问题出现在模块B中测试失败的地步?那是什么意思?编译模块A的开始是无用的,因为你已经计算了错误的代码(失败的测试)。
我明白你的观点,当然我想过。我的推理如下:如果B测试失败,是的,模块A的编译是无用的,因此编译应该停止。但是如果B测试通过,那么我可以节省一些编译时间(并且如果我贪婪的话最终会有一些测试时间)。换言之,图中的依赖关系A→B可能更多“灵活”,只要没有副作用(比如部署A,例如,如果B测试失败,你真的不想这么做) – Julien
你当然可以在理论上考虑这样的事情。但在实际操作中很难处理这些事情。 [takari smart builder](https://github.com/takari/takari-smart-builder)可能对你很有意思。除此之外,我怀疑要节省这么多时间与努力实现这一运行相比...... – khmarbaise
你能说出你的构建需要多长时间吗?你需要多少模块/测试才能提高构建速度?你有没有检查性能问题的真正原因是什么?你正在使用哪个Maven版本? – khmarbaise