把VS Code打造成Java開發IDE

近期,公司推行正版化,本人使用的是JetBrains教育版,是不允許進行商業開發的,因此開啟了艱難的備用IDE選型之路。最終,我選定了輕量級的Visual Studio Code(以下簡稱VS Code)。

各種IDE選型比較的過程就不贅述了,Eclipse、NetBeans、Srping Tools Suite等等,只能說青菜蘿蔔各有所愛。

插件淘沙

眾所周知,VS Code是一款輕量級的通用編輯器,和Eclipse一樣全靠海量的插件擴展,網上各類插件推薦文章又都是面向VS Code的最大IDE用戶群-前端開發人員的。

無奈之下只能逐一試驗,又開始了一輪插件淘沙的過程,最終篩選出幾十款插件,詳見vscode-java-dev-tools-pack/README.md

訂製Extension Pack

插件是篩選出來了,但是幾十款插件總不能每次都一個一個去點擊安裝吧,而且也難以維護。

幸而VS Code自身提供了一種叫Extension Pack的插件,這種插件的目的就是為了彙集一批插件到一起而設計的,安裝了一個Extension Pack就會自動安裝Pack內的全部插件。

VS Code提供了一套nodejs工具用於輔助開發者創建擴展,同時官方文檔中提供了簡單明了的文檔說明以及豐富的samples,samples包括Command、Color Theme、Tree View等等,本文僅做Extension Pack的示例。

環境準備

環境依賴 nodejs 以及 Git,以MacOS為例,通過Homebrew安裝:

brew install node git

然後通過 npm 安裝YeomanVS Code Extension Generator

npm install -g yo generator-code

工程初始化

調用Yeoman生成新的Extension Pack

$ yo code


     _-----_     ╭──────────────────────────╮
    |       |    │   Welcome to the Visual  │
    |--(o)--|    │   Studio Code Extension  │
   `---------´   │        generator!        │
    ( _´U`_ )    ╰──────────────────────────╯
    /___A___\   /
     |  ~  |
   __'.___.'__
 ´   `  |° ´ Y `

? What type of extension do you want to create?
  New Extension (TypeScript)
  New Extension (JavaScript)
  New Color Theme
  New Language Support
  New Code Snippets
  New Keymap
❯ New Extension Pack
  New Language Pack (Localization)

回車後會提問是否要將當前已安裝的擴展安裝到新的Extension Pack中,選擇Yes會報錯

? What type of extension do you want to create? New Extension Pack
? Add the currently installed extensions to the extension pack? Yes
Error code

Command failed: code --list-extensions
/bin/sh: code: command not found

這是因為我的VS Code並不是通過命令行安裝的,如果要使用code命令就需要通過命令行安裝VS Code,然後重新執行yo code

MacOS上通過Homebrew安裝vs code:

brew cask install visual-studio-code

當然也可以選擇不自動安裝已有擴展,同樣可以順利進行後面的配置。

? What type of extension do you want to create? New Extension Pack
? Add the currently installed extensions to the extension pack? No
? What's the name of your extension? vscode-java-dev-tools-pack
? What's the identifier of your extension? vscode-java-dev-tools-pack
? What's the description of your extension? Some Java develop support tools extension pack.
? Initialize a git repository? Yes
   create vscode-java-dev-tools-pack/.vscode/launch.json
   create vscode-java-dev-tools-pack/package.json
   create vscode-java-dev-tools-pack/vsc-extension-quickstart.md
   create vscode-java-dev-tools-pack/README.md
   create vscode-java-dev-tools-pack/CHANGELOG.md
   create vscode-java-dev-tools-pack/.vscodeignore
   create vscode-java-dev-tools-pack/.gitignore
   create vscode-java-dev-tools-pack/.gitattributes

Your extension vscode-java-dev-tools-pack has been created!

To start editing with Visual Studio Code, use the following commands:

     cd vscode-java-dev-tools-pack
     code .

Open vsc-extension-quickstart.md inside the new extension for further instructions
on how to modify, test and publish your extension.

For more information, also visit //code.visualstudio.com and follow us @code.

通過Yeoman工具,我們配置了nameidentifierdescription,並且工具自動生成了一個本地git倉庫,工程目錄結構如下:

$ tree -a -L 1
.
├── .git
├── .gitattributes
├── .gitignore
├── .vscode
├── .vscodeignore
├── CHANGELOG.md
├── README.md
├── package.json
└── vsc-extension-quickstart.md
  • CHANGELOG.md 發布變更記錄,在Visutal Studio Code Marketplace的詳情頁中有該文件的鏈接。
  • README.md 在Visutal Studio Code Marketplace的擴展詳情,作用類似GitHub Page。
  • package.json 擴展的 manifest文件,定義了擴展的相關屬性。
  • vsc-extension-quickstart.md 針對生成的工程中文件的簡易說明文檔。

package.json

作為Extension Pack類型的VS Code 擴展來說,只需要維護package.json就行,package.json中的各項欄位可以參考VS Code的官方文檔Extension Manifest

也可以參考我的vscode-java-dev-tools-pack/package.json,這是一個比較完整的Demo。

package & publish

微軟關於插件打包發布可以參考文檔Publishing Extensions

微軟提供了vsce這款命令行工具方便開發者進行打包和發布:

npm install -g vsce

安裝完成後,cd到工程目錄下,進行打包生成.vsix文件

$ vsce package
 DONE  Packaged: /Users/larva-zhang/vscode-java-dev-tools-pack/vscode-java-dev-tools-pack-0.0.1.vsix (7 files, 16.7KB)

注意版本號,是根據package.json文件中的version來生成的,version必須是major.minor.。

package成功後,需要去vs code創建一個publisher,推薦通過瀏覽器訪問management page創建,比較直觀。

也可以通過vsce命令行創建,詳見Create a publisher

有了publisher後就能進行publish了,還是在management page頁面,通過上傳.vsix文件的方式即可,當vs code校驗通過後就會發布到Visual Studio Code Marketplace

publish同樣可以通過vsce命令行進行,詳見Log in to a publisher

總結

插件安裝完成後還是需要逐一去配置調試的,這個沒法自動化,畢竟各人喜好不同,不過大多數插件都是開箱即用的。

作為開源的輕量級通用編輯器,VS Code的Java開發體驗確實不如JetBrains,但和Eclipse一樣勝在開源免費,所以還是可堪一用的。

最後給我的Extension Pack打個廣告Java Dev Tools Pack
,如有好的插件推薦也歡迎提PR給我。