首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven多模块项目生命周期

Maven多模块项目生命周期
EN

Stack Overflow用户
提问于 2014-03-13 20:13:35
回答 1查看 1.1K关注 0票数 1

我有一个大型的多模块maven项目,并正在使用编译器,万无一失和故障安全插件。我所有的单元测试都是以“万无一失”的方式运行的,而我的集成测试则是用“故障安全”进行的。为什么在整个项目上运行mvn verify,它似乎做了以下工作:

  1. 获取要运行的下一个模块(基于依赖关系图)
  2. 执行该模块的完整生命周期(初始化、编译、测试、集成-测试、.)
  3. 重复直到不再有模块

这是一个非常缓慢的过程,如果这样做的话,我觉得会更快:

  1. 编译所有模块
  2. 在所有模块上运行单元测试
  3. 在所有模块上运行集成测试

有效地做以下事情:

  1. 为所有模块执行当前阶段
  2. 进入下一阶段,重复

但是我不知道该怎么安排这个。这个是可能的吗?还是我的假设,这可能会更快?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-03-13 20:20:54

您不能这样做,请考虑以下结构

代码语言:javascript
复制
A (pom)
|
|
|
|
------B (jar)
|     \---C (dependency) 
|
|------C (jar)

这里B依赖于C,例如,在B&C中分别有以下类

B

代码语言:javascript
复制
class B{
 C c;
 public void sayHello(){
    c.sayHello();
 }
}

C

代码语言:javascript
复制
class C {
  public void sayHello(){}
 }

现在您将C类更改为

代码语言:javascript
复制
 class C {
  public void sayHello(String name){}
 }

如果您确实在所有阶段上编译,它将从any (依赖关系图)开始,C编译良好(只编译源代码并将类复制到目标/类),现在您正在B上运行编译,因为它将从本地maven缓存中获取B的旧版本(在本地maven缓存中仍然有方法)。

现在,安装首先发生在C上,在B上,它将成功

下一次相同的尝试将失败,因为B现在将找到不同的方法签名。

这里有效的是增量构建,但是maven实际上并不支持增量构建,请看,这是公开的请求。

如果希望只执行与构建生命周期无关的测试执行,则可以使用单独的构建配置文件进行测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22389877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档