首页
学习
活动
专区
圈层
工具
发布

Profiling
EN

Stack Overflow用户
提问于 2011-07-13 16:04:03
回答 3查看 3.7K关注 0票数 11

是否有工具可以对Maven构建过程本身进行分析,这样我就可以看到构建在哪里花费了大部分时间?

我们在工作中遇到了Maven 3.0.3和3.0b1的问题。与3.0.3 (9m00s)相比,我们的项目在3.0b1 (3m30s)下构建速度要快得多。使用3.0b1,构建速度大约快63% (如果我的数学是正确的)。

我尝试搜索有关Maven 3的性能比较和性能问题,但是找不到任何东西。

更新

我通过查看maven源做了更多的研究,这就是我发现的:

在使用j控制台时,我看到大部分时间(在3.0.3中)都是在DefaultProjectDependenciesResolver.java中度过的。因此,我将源代码下载到3.0b1和3.0.3,以查看发生了什么。我注意到在3.0.3中有两个版本的类。一个在org.apache.maven.project,另一个在org.apache.maven。另外,在3.0.3中,使用的似乎是前者。在遍历代码时,我看到大部分时间都是在到达以下语句时花费的:

代码语言:javascript
复制
node = repoSystem.collectDependencies( session, collect ).getRoot();

在3.0b1中,代码可以:

代码语言:javascript
复制
ArtifactResolutionResult result = repositorySystem.resolve( request );

我还注意到respositorySystemRepositorySystem类型的,具体的实现是LegacyRepositorySystem。我假设这是在Maven 3处于测试版时使用的,直到创建了新的实现?回到3.0.3,collectDependencies方法驻留在DefaultRepositorySystem.java中,这是org.sonatype.aether.impl.internal的一部分。这最终会调用collectDependencies is DefaultDependencyCollector.java,这也是org.sonatype.aether.impl.internal的一部分。我假设这就是构建依赖关系图的方式。

我现在想知道这是因为我们的依赖关系是如何构造的。以前有人见过这种行为吗?

更新

JIRA中有一个关于这个问题的问题以及一个建议的修复。我已经把这些细节作为答复发出去了。

更新

这个问题是由于maven 3.0.3 (1.11)中使用的乙醚版本造成的。版本1.12的乙醚修复了这个问题。我签出了maven 3.0.3的源代码,并编辑了POM,将乙醚的版本从1.11更改为1.12。然后,我从源代码构建了maven,并用我构建的版本替换了我的当前版本。建造时间的减少是戏剧性的。

如果您不想从源代码构建maven,可以用1.12版本替换maven的lib目录中的乙醚库。这也应该有效。

我不确定这个更改是否会使其变为3.0.4,因为maven开发人员说,许可的更改从ether1.11到aee1.12,所以他们仍在讨论。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-14 20:53:30

Maven只是一个普通的Java应用程序,所以我建议您使用分析工具(如YourKitJProfiler )启动它,并分析它的运行时性能。还可以使用JVisualVM提取运行时性能信息。

总之,我相信Maven开发人员会有兴趣了解这种性能回归。请在马文·吉拉中打开一张票,或在Maven开发人员列表上张贴

票数 5
EN

Stack Overflow用户

发布于 2013-10-07 12:01:05

至于分析Maven构建的一般问题,这个Codehaus JIRA问题提供了一个用于输出Mojos执行时间的修补程序。不幸的是,它还没有包含在Maven中。

票数 2
EN

Stack Overflow用户

发布于 2022-03-21 10:16:21

现代答案:一些剖析器列在Maven扩展上。一个仍然活跃的是jcgay/maven-分析器,我可以成功地使用它。

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

https://stackoverflow.com/questions/6681968

复制
相关文章

相似问题

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