跳到主要内容

搭建远程 Java开发环境

VSCode 远程连接​

安装远程连接插件

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

配置服务器​

因为常常需要对 api 进行调试,所以这里使用 nginx 配置一个虚拟主机,专门用来做测试接口

# 转发 80 端口到 https
server
{
if ($host = test.alsritter.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot


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

# 配置测试项目接口
server
{
server_name test.alsritter.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",
// "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 项目如丝般顺滑。

单元测试插件​

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

Maven 插件​

项目地址 Maven for Java

这个插件可以显示 Maven 插件

这个需要配置一下

"maven.executable.path": "/home/alsritter/JavaTool/apache-maven-3.6.3/bin/mvn"

检查错误​

插件地址 vscode-checkstyle

这个插件基本上是必装的

能够自动修复一些 bug

SonarLint 插件​

插件地址 SonarLint for Visual Studio Code

相信用过 IDEA 的都知道这个插件,这里就不作解释了

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

项目管理插件​

插件地址 Project Manager for Java

这个插件主要用来看当前 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 插件集合建议打开其扩展包。

有两个选项

第一个选项“禁用”为你的用户设置 第二个选项“禁用(工作区)”为工作区设置

选择“禁用(工作区)”。

此设置会只应用到当前工作区下,不会影响用户设置和其他工作区的设置,文件夹无此设置。

然后会看到当前工作区启用了哪些插件

IDEA​

参考资料 jetbrains 家的 IDE 有没有类似 vscode remote 这样的功能? V2EX 参考资料 IDEA Full remote mode

IDEA 好像没有直接 ssh 连接上服务器直接改代码的功能,所以得通过 FTP 进行文件同步的方式来同步代码

注意:JB 系列的 remote 和 vscode 的不一样

  • JB 系列是调用远程的命令进行调试和编译,同时用 rsync 把远程代码同步到本地,在本地对代码进行操作
  • vscode 是代码不落到本地,在远程架一个 headless vscode,和本地仅通信最基本的 UI 需要的信息

他们的区别在于,vscode 的模式下,可以达到代码不进入本地电脑的企业级安全性要求,且 code intellisense 等基于代码分析的能力在远端进行,可以享用高配置的 server 的性能,简单来说,JB 的所谓 remote mode,本质还是同步,而 vscode remote 是真正的云开发

TODO: 待更新...