Java Maven多模块项目生命周期
我有一个大型多模块maven项目,正在使用编译器、surefire和故障保护插件。我的所有单元测试都使用surefire运行,我的集成测试使用failsafe运行。为什么在整个项目上运行Java Maven多模块项目生命周期,java,maven,build,Java,Maven,Build,我有一个大型多模块maven项目,正在使用编译器、surefire和故障保护插件。我的所有单元测试都使用surefire运行,我的集成测试使用failsafe运行。为什么在整个项目上运行mvn verify,它似乎执行以下操作: 获取要运行的下一个模块(基于依赖关系图) 执行该模块的完整生命周期(初始化、编译、测试、集成测试等) 重复此步骤,直到没有更多模块 这是一个非常缓慢的过程,我觉得如果它执行以下操作,速度会更快: 编译所有模块 在所有模块上运行单元测试 在所有模块上运行集成测试 有效地做
mvn verify
,它似乎执行以下操作:
但是我不知道如何设置它。这可能吗?还是我的假设,这可能会更快?谢谢你的帮助。 你不能这样做,考虑下面的结构
A (pom)
|
|
|
|
------B (jar)
| \---C (dependency)
|
|------C (jar)
在这里,B依赖于C,例如,在B和C中分别有以下类
B
C
现在将C类更改为
class C {
public void sayHello(String name){}
}
如果您在所有阶段都编译,它将从A-C-B(依赖关系图)开始,C编译良好(编译只是编译源代码并将类复制到目标/类),现在您在B上运行compile,它将编译良好,因为它将从本地maven缓存中获取B的旧版本(在那里它仍然有没有任何参数的方法)
现在先在C上安装,在B上安装会成功
同样的事情的下一次尝试将失败,因为B现在将找到不同的方法签名
这里有效的方法是增量构建,但是maven并不完全支持真正意义上的增量构建
如果您只想从构建生命周期中执行测试,您可以使用单独的构建概要文件来执行
class C {
public void sayHello(){}
}
class C {
public void sayHello(String name){}
}