香雨站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 63|回复: 2

在 VSCode 上搭建一个完美的 Java 环境

[复制链接]

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-6-5 14:37:15 | 显示全部楼层 |阅读模式
如果对该文章感兴趣欢迎关注我的小博客,我会分享更多学习时遇到的知识 (●'◡'●)
前言

参考资料
因为平时上课使用的是一台配置相对没有那么好的电脑(垃圾 Surface),它的内存实在不够用,所以像 IDEA 这种重量级的工具肯定是无法使用了,因此打算去试试远程开发,但是这时发现 IDEA 好像没有直接 SSH 连接服务器直接改代码的功能,它是通过 SFTP 进行文件同步的方式来进行远程开发的(细节看上面的 JB 官方文档)
下面借用 V2 老哥的回答总结一下它们的区别
JB 系列的 remote 和 vscode 的不一样 JB 系列是调用远程的命令进行调试和编译,同时用 rsync 把远程代码同步到本地,在本地对代码进行操作 vscode 是代码不落到本地,在远程架一个 headless vscode,和本地仅通信最基本的 UI 需要的信息
他们的区别在于,vscode 的模式下,可以达到代码不进入本地电脑的企业级安全性要求,且 code intellisense 等基于代码分析的能力在远端进行,可以享用高配置的 server 的性能,简单来说,JB 的所谓 remote mode,本质还是同步,而 vscode remote 是真正的云开发

这里先前置声明一下,VSCode 毕竟是一个开源软件,肯定是无法和 IDEA 这种老牌 Java IDE 比的,因此只能说接近 IDEA 的体验,以我两年的 IDEA 使用经验来说(大佬勿喷,接触编程也不久,所以可能 IDEA 还有很多好用的功能我不了解的),配置好的 VSCode 估计能有 IDEA 70%的体验,因为很多细节上的东西毕竟人家做了这么多年,肯定是插件比肩不了的(也可以自己写插件),所以对于想拿 VSCode 当主力的得慎重考虑,不过想前后端开发 ALL IN ONE 的前端朋友试试 VSCode
还有对于一些内存小的设备也是极力推荐使用 VSCode 的,在同一个项目下,使用 IDEA 本地跑已经 2G 内存起飞了,而使用 VSCode 才 300m 左右(拿远程跟本地比确实不公平,但是 IDEA 无法远程啊~)
然后就是这篇笔记虽然介绍了很多插件,还是需要点 VSCode 以及 Linux 使用经验的,不然可能哪里出现了问题都无法解决...
看完了上面的缺点如果对 VSCode 写 Java 还是感兴趣的就接着往下看吧
Let's get started~
VSCode 远程连接

既然是远程开发,所以首先肯定是先安装远程连接插件



然后就是 ssh 连接,配置公钥密钥免密登陆就不细说了



连上之后就可以直接使用 VSCode 进行管理了

配置服务器

因为常常需要对 api 进行调试,所以这里使用 nginx 配置一个虚拟主机,专门用来做测试接口
# 转发 80 端口到 https
server
{
    if ($host = test.example.icu) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name test.example.icu;
    return 404; # managed by Certbot
}

# 配置测试项目接口
server
{
    server_name test.example.icu;

    gzip on;

    location / {
        proxy_pass http://localhost:8080;

        proxy_set_header  Host                $http_host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-Ssl     on;
        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_set_header  X-Frame-Options     SAMEORIGIN;

        client_max_body_size        100m;
        client_body_buffer_size     128k;

        proxy_buffer_size           4k;
        proxy_buffers               4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/alsritter.icu/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/alsritter.icu/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
注意,这里使用了 SSL 别忘了要重新申请下子域名
certbot --nginx

# 申请完成后重启下 nginx
nginx -s reload安装 JDK

wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz

# 解压
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz

# 或者使用这个版本的
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/11.0.8%2B10/openlogic-openjdk-11.0.8%2B10-linux-x64.tar.gz

# 解压
tar -zxvf openlogic-openjdk-11.0.8+10-linux-x64.tar.gz配置环境变量
$ vim ~/.bashrc

# 末尾增加如下内容(根据自己jdk目录修改):
export JAVA_HOME=/usr/local/jdk/jdk-11
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
# 注:
# 修改所有用户的环境变量:/etc/profile文件
# 只修改root用户的环境变量:~/.bashrc文件


$ source ~/.bashrc   # 使配置文件生效检查是否安装成功



注意,如果运行着多个终端,需要重启其它的终端才能检查到环境变量变化了(或者直接在别的终端执行这个 source ~/.bashrc 命令) ,且不用使用 ~/.bash_profile 具体原因看 Linux 配置环境变量那篇笔记
配置远程 Maven 仓库

先安装一下 Maven
wget https://apache.website-solution.net/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz同上配置环境变量
export JAVA_HOME=/usr/local/jdk/jdk-11
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

export M2_HOME=/home/alsritter/JavaTool/apache-maven-3.6.3/
export MAVEN_HOME=${M2_HOME}
export MAVEN_BIN=${M2_HOME}/bin/
export PATH=${PATH}:${MAVEN_HOME}:${MAVEN_BIN}检查是否安装好
mvn -v



然后修改下配置文件
<localRepository>/home/alsritter/JavaTool/mavenRepo</localRepository>

<!-- .... -->

<mirrors>
     <mirror>
      <id>aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun Maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>   
</mirrors>配置 Java环境插件

参考资料 VS Code 中有哪些好用的 Java 插件?
安装这个 Java 插件包,它会自动把 Java环境用到的插件都装上



首先配置这个核心插件



Red Hat 的 Java 插件是每个 VS Code Java 用户的必装插件。对 Maven/Gradle 项目的基本支持、代码格式化,代码重构、代码片段、语法高亮、代码自动补全等等核心功能,都在这个插件中。
值得注意,这些插件设置是有远程设置和本地设置之分的



需要配置这个远程的配置文件
{
  "java.home": "/usr/local/jdk/jdk-11",
  // 注意:如果使用了别的版本的 JDK 需要配置这个
  // "java.configuration.runtimes": [
  //   {
  //     "name": "JavaSE-11",
  //     "path": "/usr/local/jdk/jdk-11",
  //   },
  // ],
  "remote.autoForwardPortsSource": "output",
  "spring-boot.ls.java.home": "/usr/local/jdk/jdk-11"
}Debug 插件


插件地址 :



调试对于每一个语言来说当然是必不可少的功能。Debugger for Java 除了提供 Launch/Attach、断点/条件断点、Step In/Out/Over、Callstacks 这些基本功能,还支持 Logpoints、Hot Code Replace 等高级功能。
单元测试插件





Java Test Runner 对主流的测试框架 JUnit 和 TestNG 都有着很好的支持。在 Test Explorer 中,可以方便地查看所有测试用例、运行/调试测试代码、查看测试报告。如下看



它能自动显示当前项目内包含的单元测试



每一个都是配置好的单元测试



点击运行后能自动显示报告到页面上

Maven 插件

项目地址



这个插件故名思想,就是用来管理 Maven 依赖的,例如自动下载 pom 文件里面的依赖之类的



这里介绍一个前沿功能,生成 Maven 依赖关系,如 IDEA 那种



首先它需要配置一下
"maven.executable.path": "/home/alsritter/JavaTool/apache-maven-3.6.3/bin/mvn"


在这里右键,选择显示所有依赖

然后就能看到生成的依赖了,如下图所示



是以文本的形式呈现的

至于如何以 GUI 的形式呈现,得看官方了,不过它已经提上计划了,估计过几个版本就可以做到了
关注这个 issue
检查错误

插件地址



这个插件基本上是必装的
能够自动修复一些 bug





SonarLint 插件

插件地址
相信用过 IDEA 的都知道这个插件,作用基本同上,这里就不作解释了



但是这个插件和 Lombok 插件有些冲突,如下所示,所以需要关掉一些规则(遇到时 ctrl 加回车有提示)



项目管理插件

插件地址



这个插件主要用来看当前 Java 项目用到的依赖(也可以直接显示 Maven下载的依赖)



Spring 相关插件

安装 Spring 大礼包插件
详情参考 spring-projects/sts4



辅助性的插件

YAML 插件

插件地址 YAML



按着 Ctrl 键点击 yml 属性可以自动跳转到对应的元文件定义里面





这个插件要使用 Red Hat 的
XML 插件

插件地址 XML Language Support by Red Hat



Lombok 插件





MyBatis 插件

项目地址 base on vscode-mybatisx



TODO 插件





效果如下



IDEA 快捷键插件

项目地址 IntelliJ IDEA Key Bindings for Visual Studio Code
如果不习惯 VsCode 的快捷方式,可以使用这个插件



使用工作区整理插件

上面配置了一堆插件,会显得 Vscode 十分臃肿,这时就可以使用工作区来整理它们



找到当前插件,若是 Java 插件集合建议打开其扩展包。
有两个选项
第一个选项“禁用”为你的用户设置 第二个选项“禁用(工作区)”为工作区设置
选择“禁用(工作区)”。



此设置会只应用到当前工作区下,不会影响用户设置和其他工作区的设置,文件夹无此设置。
然后会看到当前工作区启用了哪些插件



TODO: 待更新...
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-6-5 14:37:41 | 显示全部楼层
多谢了哦
回复

使用道具 举报

2

主题

6

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-6-5 14:38:19 | 显示全部楼层
最大的问题不在java,而在java+scala+maven
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|香雨站

GMT+8, 2025-3-15 05:05 , Processed in 0.953741 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表