2010-02-04 70 views
18

我要求工作中的Maven培訓,並且老闆們想聘請一個知道Maven的人作爲顧問來與我們合作,以便我們從真實世界的角度而不是培訓中學習Maven透視。確定Maven知識的問題

我的任務是提出各種難度的問題,詢問潛在的僱員以確定他們的Maven能力。問題是我還沒有完全理解Maven(因此是培訓請求)。

你會問什麼問題,以確定他們的Maven能力,以及Maven如何回答他們需要知道的水平?

回答

34

在我看來,一個「Maven的顧問」應:

  • 有Maven的其他的構建工具,如螞蟻的不同之處有很好的理解(Maven提供了一個「通用語言」項目管理)。
  • 有Maven的原則很好理解:在配置方面,默認佈局,命名約定,工具的理念(每個項目一個主輸出)公約。
  • 有Maven的是如何工作的一個很好的瞭解:從哪裏約定的來源(超級POM),在生命週期(主,乾淨,酒店),階段,插件是如何綁定到階段,包裝的影響, etc
  • 知道配置文件是什麼,以及如何使用它們來處理不同的環境,以及如何觸發它們。
  • 知道如何使用插件,如何配置它們,如何將它們插入Maven構建中。
  • 知道存儲庫是如何工作的,本地和遠程存儲庫之間的區別,SNAPSHOT依賴關係是什麼。
  • 懂得依賴性都解決了,什麼傳遞依賴是,如何控制它們,哪些依賴範圍的,如何使用dependencyManagement
  • 知道如何實現代碼健康檢查,必要的插件(的Checkstyle,PMD和FindBugs的插件),如何實現不同類型的測試(單元,集成,功能),如何測量範圍,當構建失敗,當報告。
  • 瞭解如何在企業環境中設置maven(使用共享存儲庫,設置CI,公司POM)。
  • 知道如何處理高級包裝scenarii(使用程序集插件)
  • 知道如何處理部署,各種協議,部署插件,發佈插件,SNAPSHOT解決方案。
  • 知道如何設置一個Maven構建的Java EE項目,多模塊如何設置建立,需要哪些模塊,如何在開發環境中測試,如何處理生產環境。

有這些技能的人應該把你放在正確的道路上(並且很可能有一個Maven的體面經驗)。

+1

+1 Maven顧問應該也是一名經驗豐富的Java開發人員/架構師。調整Maven需要對整個Java生態系統有深入的瞭解。對於現有的項目,有時需要重構代碼結構。 – cetnar 2010-02-05 07:13:37

+0

@cetnar肯定是真的。擁有開發經驗,框架和相關的約束是一個巨大的優勢。 – 2010-02-05 13:16:15

+0

依賴調解的一個正確的解釋是必須的 – 2014-08-29 10:01:59

4

我建議你想想你想要用Maven做什麼,或者你爲什麼想把它引入到你的項目中。也許在介紹Maven時,請向你的老闆索要他的原因/目標。

當您命名您的主要目標爲什麼要介紹Maven。請諮詢潛在顧問他們將如何使用Maven實現這些目標


實例1
目標:提高項目的整體代碼質量。

問題:我們如何使用Maven來提高項目的整體代碼質量。

可能的答案:Maven有幾個插件來強制/確保項目中的代碼質量,我們幾乎可以立即將這些插件集成到我們的構建腳本中。 (例如checkstlye,PMD的Cobertura,xradar ...)

實施例2
目標:創建幾個目的地環境自動化部署腳本。

問題:我們如何使用Maven自動將工件部署到多個目標環境。

可能的答案:我們可以使用Maven插件進行部署(例如Cargo)並使用maven的配置文件來處理多種配置。

a.s.o.

1

這裏有問題我會問:

  • 你將如何執行的一組項目中使用JDK6 的?
  • 你會如何執行一個 特定版本的插件?
  • 爲什麼你 將使用一個組件來構建一個罐子 而不是jar插件的原因是什麼?
  • 描述發佈由EJB,WAR 文件和兩個實用程序jar組成的Java EE項目的過程。
  • 內部公司存儲庫服務器有多少個存儲庫?爲什麼?
  • 您將如何構建由N個子項目組成的POM項目,以便在Eclipse中輕鬆使用它?

所有這些問題至少有兩個答案。我會尋找能提供至少兩個答案的人,並指出每種方法的優缺點。理想情況下,這個人應該調整設置,以減少對環境已經起作用的干擾。

4

我會問:

  • 描述什麼是供應鏈管理的做法?
  • 描述您理想的Maven基礎架構(服務器,存儲庫,CI,插件,約定等)?

兩者都非常開放的問題,但他們應該給你一個他的技能感覺,你可以從他身上學到什麼,他會帶來給貴公司。

編輯

Maven是在整體軟件配置管理(SCM)的戰略只是一塊。一個好的顧問應該知道maven進出的細節,但也知道它如何適應大局。就像您期望Java EE顧問成爲Java專家一樣,但知道向客戶提供企業應用程序意味着什麼。

在我工作的公司,我們有一個負責SCM的人,他曾是Maven的貢獻者。他的觀點比「僅僅」的maven更廣泛。他負責進行高效的構建,配置和發佈過程。舉兩個例子:

  • 我們被硬編碼在Java代碼中的版本號,以便能夠顯示它進入我們的桌面應用程序的「關於」對話框。大多數情況下,我們在發佈之後忘記更改它,導致實際發行版號與關於對話框之間的不匹配 - 集成商在現場遇到的大問題。這是一個不好的做法。然後,他設置了一些內容,以便Maven中的版本號在manifest文件中是正確的,並教導我們從Java中讀取manifest文件以確保兩者匹配。

  • 當你發佈一個模塊時,他編寫了一個腳本,不僅可以構建應用程序,還可以關閉票據系統(JIRA)中的相應版本並推送wiki中的發行說明。

所有這一切說,知道如何「mavenize」項目固然重要,但更重要的是,人必須瞭解你目前的工作方式,是什麼地方,幫助您設置一些合理的,以提高你的生產率。

+1

爲「適合大局」(如實際上的任何工具) – 2010-02-05 15:02:51

0

如果您有奢侈品,我建議讓顧問來現場一天,給他/她一個現有的Java項目,並且讓他/她爲您「發揮它的作用」。第二天,和他/她坐在一起,讓他們解釋如何編譯,並建立一個罐子(或戰爭)。

或者讓他們來參加一個maven項目的採訪來演示。應該能夠編譯,並至少建立一個jar/war,imo。如果他們可以運行單元測試,那麼部署到tomcat,與gwt,hibernate,spring等各種框架集成,然後再更好。

5

這裏有很多很好的問題,特別是Pascal Thivent提出的問題。但是,我會問另一個問題:

問:Maven中的聚合和繼承有什麼區別?
文章:你可以有一個簡短的解釋here

+1

+1我應該明確提到繼承vs聚合(在如何設置多模塊構建) – 2010-02-05 13:19:11

+0

+1以及對範圍的理解對於任何非平凡的maven設置都非常重要。 – sal 2010-02-05 15:41:27