最近,我花了很多時間來編寫或為Maven開發插件。 它們簡單,有趣且有趣。
我以為我會分享一些技巧,使他們在編寫時變得更輕松。
提示1:將任務與Mojo分開
最初,您將把mojo的所有代碼放入mojo的類(即,擴展AbstractMojo的類)中。 而是考慮將任務分離出來,并為mojo提供最少的填充代碼。 這將:
- 使單元測試更加容易。
- 意味著您可以輕松地與其他工具集成,例如Ant。
- 使在mojo中轉換簡單數據類型變得更加容易,從而為您的任務轉換更復雜的類型(例如,將字符串轉換為文件)。
- 將異常翻譯與任務分開。
技巧2:考慮將配置外部化
通常,您可以使用POM中的元素配置插件。 對于簡單的情況,這很好。 當您有大量的配置項目集或可能有多個配置文件的地方時,這將導致冗長且難以理解的POM。 您可以按照組裝插件的示例進行操作,并具有一個用于放置config的標準化目錄,例如src / main / myplugin / config-profile-1.xml。
提示3:將Mojo與相匹配
考慮一下您可能希望mojo進入哪個階段。如果它正在做的事情應該拆分為跨階段,則將mojo拆分并綁定到適當的階段。 這將使測試和維護變得更加容易。
提示4:不要重復耗時的工作
您的mojo將在相同源代碼和配置的較小變體上多次運行。 每次執行時,它都會做很多密集的工作嗎? 我使用的Mojo每次運行文件時都將其解壓縮,方法是將郵政編碼更改為僅通過檢查文件修改時間來刷新文件,該任務從一分鐘的執行時間縮短到不到10秒。
提示5:計劃測試
最初,您可能正在編寫mojo并在要使用它的第一個項目上進行手動測試。 這將是一個漫長的測試周期,并導致不可靠的mojo。 將任務與mojo分開可以使測試任務變得容易,但是您需要對mojo進行一些煙霧測試。 用戶往往很難注意到mojo中的錯誤,因為人們傾向于認為大多數mojo經過了良好的測試和可靠。
技巧6:考慮如何為Mojo提供文檔和幫助
IDE和Maven在這里可能無濟于事。 該配置項是什么意思? 我可以看個例子嗎? 解決方案是提供一個“幫助” mojo和一個可選的Maven站點。 例如,如果您執行“ mvn assembly:help”或“ mvn surefire:help -Ddetail = true -Dgoal = test”,則會看到幫助。
參考:來自我們的JCG合作伙伴 Alex Collins的Java,* NIX,測試,性能,電子游戲技術等博客的編寫Maven插件的提示 。
翻譯自: https://www.javacodegeeks.com/2012/12/tips-for-writing-maven-plugins.html