早先进行 JavaWeb 开发使用的是 IDEA,但后续使用中感觉太笨重了,本着为 vscode “宇宙第一IDE” 正名,最近探索了使用 vscode 进行 JavaWeb 开发。
1 开发环境配置
开发环境配置参考了 Dr.F.Arthur 大佬的Blog,按着大佬的教程也没有遇到什么大坑,很顺利的就完成了,在这里不再多说,链接:
2 开发日志记录
2.1 Maven-archetype-webapp 文件结构目录
官方提供的文件结构介绍:Maven – Introduction to the Standard Directory Layout
但里面也没有具体说明 js, css, jsp, img, jar 这些东西放在哪,这里以1.4版本的 maven-archetype-webapp 模板开发的名为 webgis 的项目为例,介绍一下我采用的文件结构:
目录 | 说明 |
webgis/lib | 放 .jar 文件,打包后会存放到 target/webgis/WEB-INF/lib 下 |
webgis/src/main/java | 放源码,打包后会存放到 target/webgis/WEB-INF/classes 下 |
webgis/src/main/webapp/jsp | 放 .jsp 文件,打包后会存放到 target/webgis/jsp 下 |
webgis/src/main/webapp/js | 放 .js 文件,打包后会存放到 target/webgis/js 下 |
webgis/src/main/webapp/css | 放 .css 文件,打包后会存放到 target/webgis/css 下 |
webgis/src/main/webapp/img | 放图片文件,打包后会存放到 target/webgis/img 下 |
2.2 Maven 导入本地 jar 包并参与构建 war 文件
在其它 Java 项目开发中,如果要引入 jar 文件可以在 vscode 的 “Configure Classpath" 配置中导入,但是,当你使用 maven 的模板创建项目后,你会发现,”Configure Classpath" 无法使用:
所以这个时候就只能在 pom.xml 中修改,引入本地 jar 包主要添加以下代码:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/fastjson-1.2.47.jar</systemPath>
</dependency>
其中 <groupId> 和 <artifactId> 会影响在 java 文件的引入名称,如在 java 文件中引入上面的包:
import com.alibaba.fastjson.*;
引入的包在使用 maven 打包时是无法打包到 war 文件中的,因此会出现文件不能用的情况,这里还需要在 pom.xml 中添加以下代码,会在 maven 打包时把 webgis/lib 下的所有 jar 打包到 target/webgis/WEB-INF/lib 下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>WEB-INF/lib</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
值得一提的小 trick: 在使用 maven 更新 war 包的时候,最好先使用 clean 命令清掉上一次打包的所有东西,然后再使用 package 命令打包。
此外,在 vscode 右下角的相应服务器上右键 "Debug Server" 就可以直接在源码中打断点调试了,非常方便有木有!
2.3 Window 环境下 Tomcat 无法正常关闭
在使用vscode的 "Community Server Connectors" 插件启用 Tomcat 时,有时会莫名出现服务器在插件中显示关闭但是却依旧运行,此时可以通过以下方法来关闭服务器(也可以直接运行 shutdown.bat ,我后来才想起来这么简单的方法,笑哭)。
① 在cmd中查看8081有没有被占用,找出占用8081端口的进程
netstat -ano | findstr “8081”
② 输入命令后,发现是其PID为 17284 的占用了8081端口
③ 任务管理器-详细信息-右键结束进程