VSCode是一个文本编辑器,相对于庞大的IDE,它有更轻量级的体验和优秀的性能表现,对于Java项目的依赖管理,也要求我们有更基础的认识。
jar包与classpath
如果有很多.class文件,散落在各层目录中,肯定不便于管理。如果能把目录打一个包,变成一个文件,就方便多了。
jar包就是用来干这个事的,它可以把package组织的目录层级,以及各个目录下的所有文件(包括.class文件和其他文件)都打成一个jar文件,这样一来,无论是备份,还是发给客户,就简单多了。
jar包实际上就是一个zip格式的压缩文件,而jar包相当于目录。如果我们要执行一个jar包的class,就可以把jar包放到classpath中
classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class。
因为Java是编译型语言,源码文件是.java,而编译后的.class文件才是真正可以被JVM执行的字节码。因此,JVM需要知道,如果要加载一个abc.xyz.Hello的类,应该去哪搜索对应的Hello.class文件。
所以,classpath就是一组目录的集合,它设置的搜索路径与操作系统相关。
也就是说,在编译阶段,项目所依赖的jar包需要被明确第年与在classpath里,写在全局变量里也好,定义在编译路径也罢,都要明确指明。
json引入
在vscode的setting.json
中指明,即可使VSCode在编辑阶段
{
"java.project.referencedLibraries": [
"lib/*.jar" // 此处可以指向绝对路径
]
}
- 若指向相对路径,则是指打开的文件夹下的相对位置
- 若指向绝对路径,则是全局导入(实测速度更快)
.classpath
也可以采用类似eclipse的方法引入,同样在文件夹的相对路径下建/lib
然后把jar包拷过来
然后在.classpath
文件中写入<classpathentry kind="lib" path="lib/*.jar"/>
即可
Maven
maven是java的项目管理工具:
a-maven-project
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── target
这是maven常见的项目架构,在pom.xml
里修改,maven就会自动下载:
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
可以通过引入阿里云镜像来加速
<settings>
<mirrors>
<mirror>
<id>aliyun</id>
<name>aliyun</name>
<mirrorOf>central</mirrorOf>
<!-- 国内推荐阿里云的Maven镜像 -->
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
</settings>
reference
https://www.liaoxuefeng.com/wiki/1252599548343744/1309301178105890