2015-10-09 43 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 

然后,您需要有一个进一步的图层(脚本?)来进行数据积累,以便获得跨生成统计信息。但是,它已经回答了你的第三个问题,这可能是一个好的开始。