gpt4 book ai didi

java - 在 Java 项目中获取所有构建错误的最快方法是什么?

转载 作者:行者123 更新时间:2023-11-30 11:28:10 25 4
gpt4 key购买 nike

目前我正在考虑将一些构建过程集成到我的源代码管理中(特别是 Git Hook )。我正在尝试编写一个预提交 Hook 来检查我的 Java 项目(一个中型大型测试开发项目)中的构建错误,并且不允许提交包含构建错误的提交。事实证明这是相当具有挑战性的。

方法here使用命令行 Eclipse 工具构建和输出警告和错误。这在技术上确实有效,但它很慢并且可能导致 Eclipse IDE 出现问题(我已经遇到堆分配错误)。我还查看了使用 ant 的解决方案但这些方法似乎不是简单的单线解决方案,而且可能仍然很慢。

我的主要问题:通过命令行构建和验证 Java 项目的最快(运行时编译速度)方式是什么?我想要一个没有错误返回 0 的解决方案,如果存在错误则返回其他内容,但我愿意查看其他内容。

最佳答案

让我们从一些基础知识开始:

  • 预提交 Hook 在服务器上运行,而不是客户端。默认情况下没有工作目录。您必须确保 javac 可用且版本正确。
  • 您的预提交 Hook 将卡住用户的终端直到完成。

现在, checkout 您的 Java 项目的新副本、运行 Ant、等待它编译,然后处理编译输出需要多长时间?一两分钟? 20秒? 10秒?当您等待 Git 推送完成时,即使是 10 秒也会感觉像永远一样。而且,如果其他用户想要提交代码,他们也必须等待。

更好、更简单的方法是使用 Continuous Build Server,例如 Jenkins . Jenkins 很容易设置。 (它带有自己的内置应用程序服务器)并且有数百个插件,您可以使用它们来帮助报告项目的健康状况。如果无法进行编译,Jenkins 将向罪魁祸首和您提到的任何其他人发送电子邮件。

我们有 Jenkins 设置来执行 Ant 构建、Maven 构建,并使用 Git 或 Subversion 作为我们的存储库(取决于项目)。 Jenkins 构建项目,保留控制台日志,如果 build.xml 失败,构建将失败。在我们这里,这意味着我开始缠着开发人员解决问题或撤消他们的更改。在我上一个工作场所,开发人员有 10 分钟的时间来修复构建,否则我会撤消他们的更改。

Jenkins 不仅可以让您知道构建失败的时间,而且还有可以报告 Java 编译器警告、Javadoc 警告、运行 Findbugs 的插件。 , PMD ,找到重复的代码行(通过 PMD 附带的 CPD),然后在一系列图表中报告所有内容。您还可以将构建标记为不稳定(构建已完成,但存在问题),或者根据使用这些工具发现的问题数量简单地使构建失败。

Jenkins 还可以运行单元测试,再次绘制结果图表,然后使用 JaCoCo 运行覆盖率分析或 CoberturaEmma .

那么,看看 Jenkins。它易于设置,并且可以完全按照您的意愿行事,甚至更多。

关于java - 在 Java 项目中获取所有构建错误的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com