2017-05-25 81 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