VS Code 中管理 Java 项目
Java 项目管理器扩展帮助你管理 Java 项目及其依赖。它还帮助你创建新的 Java 项目、包和类。要在Visual Studio Code中获得完整的Java语言支持,可以安装Java扩展包,其中包含Project Manager for Java扩展。
关于如何开始使用扩展包的详细信息,你可以查看《Java入门教程》。
项目视图
Java 项目视图帮助你查看 Java 项目及其依赖,并为项目管理任务提供入口。

默认情况下,Java 项目视图显示在资源管理器视图下方。如果看不到,试着点击
...在 EXPLORER 标题栏中点击按钮,然后选择 Java 项目。
在导航栏的溢出按钮中,还有更多选项可用。例如,你可以在分层视图和平视图之间切换。

你可以在资源管理器的节点旁边找到按钮,这些按钮为某些动作提供了有用的快捷方式。

每个节点的上下文菜单里还有许多实用功能,你可以在资源管理器中右键点击该节点切换。

创建一个新的 Java 项目
您可以通过在导航栏中的 + 按钮,或通过命令面板中的命令 Java: Create Java Project... (Windows,Linux Ctrl+Shift+P))创建新 Java 项目。在创建过程中,VS Code 会根据你的项目类型安装所需的扩展,如果这些扩展还没安装的话。

导入 Java 项目
你可以直接通过“文件 > 打开文件夹”导入现有的 Java 项目和模块到工作区......(确保打开的文件夹包含你的构建工具脚本,例如,pom.xml或build.gradle).Java 版 VS Code 会自动检测你的项目并导入。
当你在项目中添加新模块时,可以触发命令 Java:在工作空间导入 Java 项目,将其导入到工作区。这个命令有助于将新项目导入工作区,而无需重新加载 VS Code 窗口。
出口至JAR
你可以从项目视图导出你的构建到 JAR,或者通过运行命令 Java: Export Jar... 来实现。

为项目配置运行时
随着 Java 的发展,开发者通常会同时使用多个版本的 JDK。你可以通过以下设置将它们映射到本地安装路径:java.configuration.runtimes.该设定的格式如下:
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/usr/local/jdk1.8.0_201"
},
{
"name": "JavaSE-11",
"path": "/usr/local/jdk-11.0.3",
"sources" : "/usr/local/jdk-11.0.3/lib/src.zip",
"javadoc" : "https://docs.oracle.com/en/java/javase/11/docs/api",
"default": true
},
{
"name": "JavaSE-12",
"path": "/usr/local/jdk-12.0.2"
},
{
"name": "JavaSE-13",
"path": "/usr/local/jdk-13"
}
]
注意:你可以通过添加一个设置为默认
“默认”:真去入口。默认的 JDK 会用于你的非管理文件夹(没有构建工具)。
要查看你的项目中使用了哪些 JDK,你可以触发命令 Java: 配置 Java 运行时(Windows,Linux Ctrl+Shift+P))。该命令会打开一个视图,显示你项目的运行时信息:

将JDK用于Maven和Gradle项目
如果你想更改 Maven 或 Gradle 项目的 JDK 版本,你需要在构建脚本中更新它 (pom.xml或build.gradle).你可以点击查看如何进行这些更改。点击后会进入项目的构建脚本文件。
将 JDK 转换为未管理文件夹
要更改未管理文件夹的 JDK(不用任何构建工具),你可以点击按钮。它会列出所有 JDK,你可以为你的非管理文件夹选择一个。
下载JDKs
如果你想下载新的JDK,可以点击下载链接,或触发命令 Java:在命令面板中安装新 JDK(⇧⌘P(Windows,Linux Ctrl+Shift+P))。它会打开一个新视图,引导你下载JDK。

注意:要启用 Java 预览功能,请参见“我如何使用新 Java 版本的 VS Code”。
配置非管理文件夹的classpath
Java 项目管理扩展提供了一个用户界面,用于配置非管理文件夹的类路径。类路径可以在类路径配置页面手动设置。你可以通过命令面板中的 Java: 配置类路径命令(⇧⌘P(Windows,Linux Ctrl+Shift+P))打开它。

在极少数情况下,你可能需要通过命令调色板中的 Java: Java语言服务器工作区命令(⇧⌘P(Windows,Linux Ctrl+Shift+P))来清理 Java 工作区,让语言服务器重建你的依赖。
依赖管理
添加Maven依赖
对于 Maven 项目,你可以点击项目视图中 Maven 依赖节点旁的 + 图标添加依赖。

管理未管理文件夹的依赖
如果你的项目是一个没有构建工具的非管理文件夹,你可以通过点击引用库节点上的 + 或 - 图标来管理依赖关系,或者直接拖动你的 jar 库到该节点参考库

你也可以在 classpath 配置页面管理依赖关系。参见:配置非管理文件夹的类路径
幕后有一个场景java.project.referencedLibraries在settings.json.以下是如何自定义该设置的详细信息。
包含库
引用的库是用一组球状图样描述的。
例如:
"java.project.referencedLibraries": [
"library/**/*.jar",
"/home/username/lib/foo.jar"
]
上面的设置会把所有东西都加进去.jar文件存放在工作区的库文件夹中,以及foo.jar从指定的绝对路径到项目的外部依赖。
引用的库随后由 VS Code 监控,如果这些依赖文件发生变化,项目将被刷新。
默认情况下,VS Code 会引用工作区中的所有 JAR 文件自由党使用glob模式的目录图书/**/*.jar.
排除部分库
如果你想排除一些库,可以展开java.project.referencedLibraries使用包含/排除并添加一个排除球状模式:
"java.project.referencedLibraries": {
"include": [
"library/**/*.jar",
"/home/username/lib/foo.jar"
],
"exclude": [
"library/sources/**"
]
}
在上述示例中,任何二进制JAR文件图书馆/资料来源文件夹作为项目的外部依赖被忽略。
连接源罐
默认情况下,引用{二进制}.jar我会试着搜索{二进制}-sources.jar在同一个目录下,如果找到匹配的,并附加为源代码。
如果你想手动指定一个 JAR 文件作为源附件,可以在资料来源场地:
"java.project.referencedLibraries": {
"include": [
"library/**/*.jar",
"/home/username/lib/foo.jar"
],
"exclude": [
"library/sources/**"
],
"sources": {
"library/bar.jar": "library/sources/bar-src.jar"
}
}
因此,bar-src.jar连接到bar.jar作为其源头。
轻量级模式
VS Code for Java 支持两种模式:轻量级和标准模式。轻量级模式下,语言服务器只解析源文件和 JDK;标准模式下,导入的依赖被解决,项目由语言服务器构建。轻量级模式最适合用于快速启动和轻量级环境来处理源文件,例如阅读源代码、在源代码和 JDK 之间导航、查看大纲和 Javadoc,以及检测和修复语法错误。此外,源文件和 JDK 的范围内支持代码补全。
轻量级模式不解决导入的依赖,也不构建项目,因此不支持运行、调试、重构、线条处理或语义错误检测。要启用这些功能,你需要将工作区从轻量级模式切换到标准模式。
你可以通过配置来控制启动模式java.server.launchMode以下是选项:
混合动力(默认)- 首先,工作区以轻量模式打开。如果你的工作区包含未解决的 Java 项目,系统会提示你是否切换到标准模式。如果你选择“稍后”,它将保持在轻量级模式。你可以点击状态栏上的语言状态项,手动切换到标准模式。标准- 以标准模式打开工作区。轻量级- 以轻量级模式打开工作区。你可以点击状态栏上的语言状态项,手动切换到标准模式。
语言状态项通过不同图标表示当前工作区处于哪种模式。
- - 工作区以轻量模式打开。
- - 正在以标准模式打开工作区。
- - 工作区以标准模式打开。
点击语言状态项会切换到标准模式。

建造状态
当你在Visual Studio Code中编辑Java源代码时,Java语言服务器正在构建你的工作区,为你提供必要的语言功能。你可以通过点击状态栏中的语言状态项查看详细的构建任务状态,并观察幕后发生的事情。当语言服务器正在打开Java项目的通知时,你也可以选择检查详情链接,查看构建任务的状态。
附加资源
有多个Visual Studio Code扩展支持不同的Java构建系统。以下是几个流行构建系统的扩展。
- Maven for Java
- Gradle for Java
- Bazel for Java (Bazel 是
建造文件,没有 Java 集成))
如果您在使用上述功能时遇到任何问题,可以通过提交问题联系我们。
下一步
继续阅读,了解更多: