如何把VS Code打造成Java开发IDE

 更新时间:2020年10月15日 15:27  点击:2000

近期,公司推行正版化,本人使用的是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.stage的格式

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一样胜在开源免费,所以还是可堪一用的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • Java实现经典游戏复杂迷宫

    这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • php中json_decode()和json_encode()用法与中文不显示解决办法

    本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25
  • java 运行报错has been compiled by a more recent version of the Java Runtime

    java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01
  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • Java如何发起http请求的实现(GET/POST)

    这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
  • 浅谈Java与C#的一些细微差别

    说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
  • VSCode 配置uni-app的方法

    这篇文章主要介绍了VSCode 配置uni-app的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • 解决Java处理HTTP请求超时的问题

    这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • java 判断两个时间段是否重叠的案例

    这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31
  • vscode安装git及项目开发过程

    这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
  • 超简洁java实现双色球若干注随机号码生成(实例代码)

    这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • Vscode上使用SQL的方法

    这篇文章主要介绍了Vscode上使用SQL的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-26
  • 浅谈Vue开发人员的7个最好的VSCode扩展

    这篇文章主要介绍了浅谈Vue开发人员的7个最好的VSCode扩展,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07