确定Maven知识的问题

时间:2010-02-04 15:12:57

标签: maven-2

我在工作中要求Maven培训,并且老板想聘请知道Maven的人作为顾问与我们一起工作,这样我们就可以从现实世界而不是培训角度学习Maven。

我的任务是提出各种困难的问题,询问潜在的雇员,以确定他们的Maven能力。问题是我还没有完全理解Maven(因此是培训请求)。

你会问某人有什么问题来确定他们的Maven能力,以及Maven有什么级别的知识来回答他们?

6 个答案:

答案 0 :(得分:34)

在我看来,“Maven顾问”应该:

  • 很好地理解Maven与Ant等其他构建工具的区别(Maven为项目管理提供了“通用语言”)。
  • 很好地理解Maven原则:配置约定,默认布局,命名约定,工具原理(每个项目一个主要输出)。
  • 很好地理解Maven的工作方式:约定来自哪里(超级POM),生命周期(主要,清洁,网站),阶段,插件如何绑定到阶段,包装的影响,等
  • 了解哪些配置文件以及它们如何用于处理不同的环境,以及如何触发它们。
  • 了解如何使用插件,如何配置它们,如何在maven构建中插入它们。
  • 了解存储库的工作原理,本地存储库和远程存储库之间的区别,以及SNAPSHOT依赖关系。
  • 了解依赖关系是如何解决的,传递依赖关系是什么,如何控制它们,依赖关系范围是什么,如何使用dependencyManagement
  • 了解如何实现代码运行状况检查,基本插件(Checkstyle,PMD和Findbugs插件),如何实现各种测试(单元,集成,功能),如何测量覆盖率,何时使构建失败,何时报告。
  • 了解如何在企业环境中设置maven(使用共享存储库,设置CI,公司POM)。
  • 知道如何处理高级包装scenarii(使用程序集插件)
  • 了解如何处理部署,各种协议,部署插件,发布插件,SNAPSHOT解析。
  • 了解如何为Java EE项目设置Maven构建,如何设置多模块构建,需要哪些模块,如何在开发环境中进行测试,如何处理生产环境。

拥有这些技能的人应该让你走上正确的道路(很有可能体验到Maven)。

答案 1 :(得分:5)

这里有很多好问题,尤其是Pascal Thivent提出的问题。但是,我会问另一个问题:

问:Maven中聚合和继承有什么区别?
答:您可以提供简短的解释here

答案 2 :(得分:4)

我建议你考虑一下你想用Maven做什么,或者为什么要把它介绍给你的项目。也许问你的老板介绍Maven的原因/目标

在您为主要目标命名为什么以引入Maven之后。询问潜在的顾问如何他们会使用Maven来实现这些目标。


示例1
目标:提高项目的整体代码质量。

问题:我们如何使用Maven来提高项目的整体代码质量。

可能的答案:Maven有几个插件可以强制/确保项目中的代码质量,我们几乎可以立即将它们集成到我们的构建脚本中。 (例如checkstlye,pmd,cobertura,xradar ......)

示例2
目标:为多个目标环境创建自动部署脚本。

问题:我们如何使用Maven自动将工件部署到多个目标环境。

可能的答案:我们可以使用Maven插件进行部署(例如Cargo)并使用maven的配置文件来处理多种配置。

a.s.o。

答案 3 :(得分:4)

我会问:

  • 描述SCM的做法是什么?
  • 描述您理想的Maven基础架构(服务器,存储库,CI,插件,约定等)?

两者都是非常开放的问题,但是它们应该让你对他的技能有所了解,你可以向他学习什么,以及他可以为你的公司带来什么。

修改

Maven只是整体软件配置管理(SCM)战略的一部分。一个好的顾问应该知道maven进出的细节,但也知道它如何适应大局。就像您期望Java EE顾问成为Java专家一样,但要了解向客户提供企业应用程序意味着什么。

在我工作的公司里,我们有一个负责SCM的人,他是Maven的贡献者。他的观点比“只是”maven更广泛。他负责建立高效的构建,配置和发布流程。两个例子:

  • 我们在java代码中对版本号进行了硬编码,以便能够将其显示在桌面应用程序的“about”对话框中。大部分时间我们忘记在发布后更改它,导致实际版本号和关于对话框之间不匹配 - 现场集成商的大问题。这是一个不好的做法。然后他设置了一些东西,以便Maven中的版本号在manifest文件中是正确的,并教育我们从Java中读取manifest文件以确保两者匹配。

  • 当您发布模块时,他编写了一个脚本,不仅可以构建应用程序,还可以关闭故障单系统(JIRA)中的相应版本,并在Wiki中推送发行说明。

所有这一切都说知道如何“对项目进行”“重要”,但更重要的是,这个人必须了解你目前的工作方式,现状和帮助你设置一些合理的方法来提高你的工作效率。

答案 4 :(得分:1)

以下是我要问的问题:

  • 您如何强制使用JDK6 对于一组项目?
  • 你如何强制使用a 特定版本的插件?
  • 你的原因是什么? 将使用一个程序集来构建一个jar 而不是jar插件?
  • 描述释放的过程 Java EE项目由EJB(WAR)组成 文件和两个实用工具罐。
  • 应该有多少个存储库 内部公司存储库服务器有什么?为什么?
  • 如何构建由N个子项目组成的POM项目,以便它们可以在Eclipse中轻松使用?

所有这些问题至少有两个答案。我会寻找能够提供至少两个答案的人,并指出每种方法的优缺点。理想情况下,这个人应该调整设置,以减少对环境工作方式的破坏。

答案 5 :(得分:0)

如果你有奢侈品,我建议让顾问到现场待一天,给他/她一个你正在处理的现有java项目,并让他/她“为你”“mavenize”。第二天,与他/她坐在一起,让他们解释如何编译,并建立一个罐子(或战争)。

或者让他们来参加一个maven项目的采访来展示。应该能够编译,并至少建立一个jar / war,imo。如果他们可以运行单元测试,部署到tomcat,集成任何各种框架,如gwt,hibernate,spring等,那么更好。