2017-05-25 60 views
0

我有一个大项目由18个模块和一个父项目组成。这个项目需要花费大约1个小时的时间来完成,为了改善这一点,我们决定使用maven profile来减少时间,方法是设置4个不同的maven profile,每个maven profile都有一组项目模块。 父pom.xml的模块是:maven构建过程改进

<modules> 
    <module>module1</module> 
    <module>module2</module> 
    <module>module3</module> 
    <module>module4</module> 
    <module>module5</module> 
    <module>module6</module> 
    <module>module7</module> 
    <module>module8</module> 
</modules> 

现在是像

<profiles> 
    <profile> 
     <id>main</id> 
     <modules> 
      <module>module1</module> 
      <module>module2</module> 
      <module>module3</module> 
     </modules> 
    </profile> 
    <profile> 
     <id>profile1</id> 
     <modules> 
      <module>module4</module> 
      <module>module5</module> 
     </modules> 
    </profile> 
    <profile> 
     <id>profile2</id> 
     <modules> 
      <module>module6</module> 
     </modules> 
    </profile> 
    <profile> 
     <id>profile3</id> 
     <modules> 
      <module>module7</module> 
      <module>module8</module> 
     </modules> 
    </profile> 
</profiles> 

我们使用詹金斯构建项目,我们在Maven选项提供的配置文件名称。这里的问题是我们看到构建几乎是同时进行,并且在日志中显示声纳和三叶草覆盖在整个项目上运行,而不是模块集合!任何想法如何解决这个问题?也许有人有更好的方法?

+0

例如,当你运行'profile2'时,你期望模块6被分析吗?以及在运行'profile3'时要分析的模块7和8? –

+0

是的!我曾尝试在配置文件定义中使用,并且它适用于某些模块,但其他模块无法正常工作,因此无法确定原因。也是因为我不得不在每个配置文件中这样做,因此pom看起来不好。 – fancier

+0

首先真的只需要18个模块,需要1个小时才能构建?为什么每个版本都运行声纳?三叶草覆盖面?首先删除声纳分析导致声纳分析每天只有一次意义..没有任何测试运行(这些测试真的是单元测试?)你检查了测试需要多长时间?可以很容易地从詹金斯的日志输出中提取...(顺便说一句:这些配置文件并不是真正的解决方案).. – khmarbaise

回答

1

虽然有可能到exclude a module from analysis,但您不会从当前的方法中获得您想要的结果。这是因为您希望对项目的每个子集进行SonarQube分析。很可能,您希望每个子集都能在SonarQube中显示为不同的可浏览项目。但那不会发生。由于每次分析都将使用相同的项目ID进行,因此每个配置文件都会覆盖之前分析的分析。

由于您的项目似乎由4个独立的子集组成,我建议您将项目分成4个独立的子项目,每个项目都有自己的项目ID,测试和分析。

+0

分析发生两次,如我看到的,一次在配置文件模块上,第二次在整个项目中。我认为如果我选择一个配置文件进行更快的开发测试,我会禁用它,我们将考虑在未来分解它。 – fancier

+0

有一件事我注意到了,一些maven插件有一个并发问题,如果有其他构建正在进行,这将阻止构建过程,所以它也是我们必须解决的问题。 – fancier