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

标签 java eclipse git ant

目前我正在考虑将一些构建过程集成到我的源代码管理中(特别是 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/

相关文章:

java - 如何从命令提示符运行已完成的 Selenium-RC 项目?

Java 包 - 引用来自不同包的类

Git推送不从 repo 中删除文件

git - git repo 中的 README.md 文件有什么作用?

java - Spring 应用程序对 keycloak 的基本身份验证

java - 无法在 Java 中使用带有 Https 的代理身份验证

java - addPrefrencesFromResources() 方法是否有替代方法?

android - 我如何使用 Android App 从/向 GitHub 接收/发送信息

java - 使用 minSdkVersion 在 Android 项目中管理 'deprecated' 警告

git - 获取 "stage"的 Git 概念