2015-10-09 15 views
7

我在一個大型Java項目上工作。我們使用maven作爲我們的構建工具,並且使用Intellij(14)作爲我的IDE。如何監視和記錄構建(編譯/測試)時間?

目前,如果我構建整個項目(約15個模塊),大約需要3分鐘。由於我們使用我們的代碼的方式(即使在開發中),我最終經常進行完整構建。在此基礎上說,「能衡量,始管理」,我希望能夠監視/記錄:

  1. 構建已運行一小時/天多少次?
  2. 運行構建花了多少時間?
  3. 如果有可能,要打破這種下降Maven的任務 - 即清潔/編譯/測試/其他插件等

一種方法可能是有轉儲到文件maven的輸出,然後有一個過程讀取這些/計算我想要的統計。我應該如何處理這個問題?

爲了清楚起見,我並沒有要求如何減少構建週期運行時的意見/建議。我們已經在這方面做了相當多的工作,並且正在繼續研究它 - 實際上,我真的正在尋找一種方法來監控我們在此方面取得的有效進展。

+3

如果你在一個使用源代碼管理系統的團隊中,考慮自動化你的構建週期並使用類似[Jenkins](https://jenkins-ci.org/)的東西..你會很整潔關於構建時間的概述,錯誤跟蹤和什麼? –

+0

@definitely - 謝謝 - 這是一個有用的建議,可以隨時監控日常構建時間,並希望在一致的環境中進行。但是,這並沒有考慮到我在日常開發工作中構建項目(或子模塊)的頻率。我真的很希望能夠(客觀地)說我花了x分鐘(或幾小時!)每天進行構建。 (這會提供彈藥來爭辯花時間縮短構建時間......) – amaidment

+1

在Windows中,[性能監視器](https://technet.microsoft.com/zh-cn/magazine/2008.08.pulse.aspx#id0120047 )應該能夠收集特定進程運行時間的統計數據。你可以爲你的構建/編譯/測試可執行文件設置一些性能計數器嗎? –

回答

1

This Maven Profile項目可以幫助你。

只需安裝(複製)你的$其latest版本的jar {M2_HOME}/lib/ext目錄,然後執行編譯如下

mvn clean install -Dmaven.profile 

將提供您下面的示例輸出

com.sample:test:0.0.1-SNAPSHOT 

    clean 175ms 
    org.apache.maven.plugins:maven-clean-plugin:2.5 (default-clean) 175ms 

    process-resources 336ms 
    org.apache.maven.plugins:maven-resources-plugin:2.6 (default-resources) 335ms 

    compile 1s 2ms 
    org.apache.maven.plugins:maven-compiler-plugin:2.5.1 (default-compile) 1s 2ms 

    process-test-resources 9ms 
    org.apache.maven.plugins:maven-resources-plugin:2.6 (default-testResources) 9ms 

    test-compile 59ms 
    org.apache.maven.plugins:maven-compiler-plugin:2.5.1 (default-testCompile) 59ms 

    test 1s 83ms 
    org.apache.maven.plugins:maven-surefire-plugin:2.12.4 (default-test) 1s 83ms 

    package 352ms 
    org.apache.maven.plugins:maven-jar-plugin:2.4 (default-jar) 352ms 

然後,您需要有一個進一步的圖層(腳本?)來進行數據積累,以便獲得跨生成統計信息。但是,它已經回答了你的第三個問題,這可能是一個好的開始。

相關問題