把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 安装Yeoman和VS 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 http://code.visualstudio.com and follow us @code.
通过Yeoman工具,我们配置了name、identifier、description,并且工具自动生成了一个本地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给我。
把VS Code打造成Java开发IDE的更多相关文章
- 配置Java开发IDE
http://www.cnblogs.com/feichexia/archive/2012/11/07/Vim_JavaIDE.html
- java开发环境
java开发环境搭建 文中主要内容来自:http://blog.csdn.net/cxwen78/article/details/6400798 .文章对原文有所改动. 1. 开发工具获取 开发工 ...
- Java 开发环境搭建
找到一篇很不錯的Java開發環境搭建的博客, 原文地址為:http://www.cnblogs.com/bribe/p/3377008.html Java 开发环境搭建 一.开发工具获取 1.开发工具 ...
- Java开发工具IntelliJ IDEA使用教程:创建新的Andriod项目
IntelliJ IDEA社区版作为一个轻量级的Java开发IDE,本身是一个开箱即用的Android开发工具. 注意:在本次的教程中我们将以Android平台2.2为例进行IntelliJ IDEA ...
- Java开发环境的搭建01——Eclipse篇(Windows)
搭建环境是换项目组和新入职的开发入项都必须面临的一件事情,搭搭环境,一天就过去了...本着不浪费生命不做重复的无用功,在这里写写环境搭建的基本功,这篇是介绍Java环境搭建,常见的开发IDE无非就两种 ...
- 【转】Java开发必须要知道的知识体系
Java Java是一门超高人气编程语言,拥有跨平台.面向对象.泛型编程等特性.在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:非Java莫属.今天只是梳 ...
- Java开发工具IntelliJ IDEA创建Andriod项目示例说明
IntelliJ IDEA社区版作为一个轻量级的Java开发IDE,是一个开箱即用的Android开发工具. 注意:在本次的教程中我们将以Android平台2.2为例进行IntelliJ IDEA的使 ...
- from: Java开发必须要知道的知识体系
from: https://zhuanlan.zhihu.com/p/21895647 作者:靳洪飞链接:https://zhuanlan.zhihu.com/p/21895647来源:知乎著作权归 ...
- 从零开始搭建Java开发环境第一篇:Java工程师必备软件大合集
1.JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 目前主流的JDK版 ...
随机推荐
- 结对项目:四则运算(C语言)
github地址:https://github.com/nilonger/arithmetic 结对伙伴:杨锐龙+黄海钊 一.项目要求 1.1 题目:实现一个自动生成小学四则运算题目的命令行程序(也可 ...
- Android低功耗蓝牙总结
这里只列出重点原理内容,更加细节的内容请阅读前面文章 首先要搞清楚一点,我们在 Android 中通过 SDK 获得的蓝牙广播包是经过底层的 SDK 给我们处理过的,是一个长度为 62 的字节数组.这 ...
- js对象数组新增、修改时的验证是否重复的逻辑
JS代码: // 定义数据集合 const persons = [ { id: 1, name: '张三' }, { id: 2, name: '李四' } ] console.log('') con ...
- 设计模式C++模板(Template)模式
设计模式C++描述----02.模板(Template)模式(转载) 一. 问题 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现, ...
- 快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)
快速解决Ubuntu/linux 环境下QT生成没有可执行文件(application/x-executable)(转载) 问题描述 与windows环境下不同,linux选择debug构建时并不 ...
- Docker 网络模式详解及容器间网络通信
当项目大规模使用 Docker 时,容器通信的问题也就产生了.要解决容器通信问题,必须先了解很多关于网络的知识.Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜 ...
- linux系统工程师修改打开文件数限制代码教程。服务器运维技术
提示linux文件打开错误,修改linux打开文件数参数. /etc/pam.d/login 添加 session required /lib/security/pam_limits.so 注意看这个 ...
- 整理最全的Android开发工程师面试题,面试题详解。java、Android程序员
1. 请描述下Activity的生命周期. 必调用的三个方法:onCreate()--> onStart() --> onResume(),用AAA表示 (1)父Activity启动 ...
- Idea使用方式——创建类模板
问题:创建类或接口时,要添加自定义的默认注释,比如版本,时间等.每个类修改显然不符合程序员的思路,有没有办法通过定义模板来实现? 使用Idea模板 Idea可听过创建类模板来实现. 功能路径:Sett ...
- Fitness - 05.23
倒计时222天 运动40分钟,共计8组,4.2公里.拉伸10分钟. 每组跑步3分钟(6.5KM/h),走路2分钟(5.5KM/h). 终于赶在姨妈前完成第3周的跑步训练了,可喜可贺~~ 下周预计要休息 ...