Please enable Javascript to view the contents

VS Code中进行Java开发(3):maven 项目管理

 ·  ☕ 6 分钟

项目管理

  • 创建项目: 除了通过 Maven Archetype 创建项目外,还可以使用以下命令创建一个简单的Java项目:Java: Create Java Project;如果要创建Spring Boot项目,需要使用 Spring Initializr 扩展。

  • 包和依赖关系视图: 扩展还有项目和依赖项的层次结构视图,该视图补充了 Visual Studio Code 提供的文件视图和大纲,因此您无需展开多个子文件夹来查看 Java 包。

  • 独立Java文件支持: Visual Studio Code还支持不带项目的Java文件;该解决方案基于文件夹,因此您可以使用Visual Studio Code打开一个文件夹,并且该文件夹中的所有Java文件都将使用所有可用的语言功能正确编译。您还可以运行和调试独立文件。

请确保安装了 Java Extension Pack 插件

VS code支持Maven,Gradle和Eclipse项目。项目构建由扩展自动处理,无需手动触发。

多个源文件夹

如果有多个子文件夹包含项目的源代码,则可以轻松地将这些文件夹添加到源路径(右键文件夹👉 add folder to java source path),然后将正确编译其中的所有代码。然后将正确编译其中的所有代码。

multiple-source.gif

添加外部JAR

您可以使用Java Dependency Viewer将任何JAR文件添加到您的项目中。

另一种将其他 JAR 文件作为依赖项的方法是在独立文件的根目录中创建一个 lib/文件夹,并将 JAR 文件放在其中。如果 lib/文件夹中有 foo-source.jar,则会自动检测 foo.jar 的源。

lib.gif

在配置文中,有一个设置java.project.referencelibaries。下面是有关如何自定义此设置的详细信息。

Include libraries

使用 glob 模式描述要引用的库。

例如:

"java.project.referencedLibraries": [
    "library/**/*.jar",
    "/home/username/lib/foo.jar"
]

上述设置将添加工作区库文件夹中的所有 .jar 文件以及 foo.jar,从指定的绝对路径添加到项目的外部依赖项。

然后,VS Code 监视引用的库,如果对这些相关文件进行任何更改,将刷新项目。

默认情况下,VS Code 将使用 glob 模式lib/**/*.jar 引用工作区的 lib 目录中的所有 JAR 文件。

Exclude some libraries

如果要从项目中排除某些库,可以展开java.project.referencedlibries以使用include/exclude字段并添加exclude glob模式:

1
2
3
4
5
6
7
8
9
"java.project.referencedLibraries": {
    "include": [
        "library/**/*.jar",
        "/home/username/lib/foo.jar"
    ],
    "exclude": [
        "library/sources/**"
    ]
}

在上面的示例中,library/sources文件夹中的任何二进制JAR文件都将作为项目的外部依赖项被忽略。

Attach source jars

默认情况下,引用的{binary}.jar将尝试在同一目录下搜索{binary}-sources.jar,如果找到一个匹配项,则将其附加为source。

如果要手动将JAR文件指定为源附件,可以在sources字段中提供键值映射:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
"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因类路径问题引发错误,请尝试通过设置CLASSPATH 环境变量或使用JAR文件的路径编辑.classpath 文件来手动设置类路径:

1
<classpathentry kind="lib" path="lib/log4j.jar"/>

在一些罕见的情况下,您可能需要通过命令面板执行 Java: Clean the java language server workspace 命令来清理Java工作区,以让语言服务器(language server )重新构建依赖项。

配置多个JDK

随着Java的发展,Java开发人员有时需要处理多个Java运行时。

Java扩展支持通过java.configuration.runtimes 针对Java执行环境进行首选项映射。VS Code将检测项目所需的运行时,并选择适当的运行时。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
  "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"
     }
  ]

运行时名称必须是以下之一:" J2SE-1.5"," JavaSE-1.6"," JavaSE-1.7"," JavaSE-1.8"," JavaSE-9"," JavaSE-10"," JavaSE-11"," JavaSE-12"," JavaSE-13"。我们将使用每个支持的JDK版本更新列表。

VSCode 的 redhat.java 插件会在项目和子项目中生成,.settings/.project.classpath.factorypath等文件,所以在生成 .gitignore 时记得添加 code-java ,生成的内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Created by https://www.gitignore.io/api/code-java
# Edit at https://www.gitignore.io/?templates=code-java

### Code-Java ###
# Language Support for Java(TM) by Red Hat extension for Visual Studio Code - https://marketplace.visualstudio.com/items?itemName=redhat.java

.project
.classpath
factoryConfiguration.json

# End of https://www.gitignore.io/api/code-java

Maven

由插件 Maven for Java扩展 提供支持。

加载Maven项目后,扩展将被激活,它将自动扫描pom.xml工作区中的文件,并在侧栏中显示所有Maven项目及其模块。

解析未知类型

Maven扩展还支持搜索Maven Central来解析源代码中的未知类型。您可以通过选择悬停上显示的 “Resolve unknown type” (解析未知类型) 链接来执行此操作。

maven-resolve-unknown-type.gif

使用 pom.xml

Maven扩展提供代码片段和自动补全功能;并且支持基于本地 Maven 存储库来添加 Maven 依赖项;在pom.xml 文件中添加新依赖项时会更加的方便。

maven-pom-editing.gif

该扩展还可以让你能够生成有效的 POM

maven-effective-pom.gif

您还可以使用命令 Maven:添加依赖关系(或maven.project.addDependency)来在pom.xml中添加新的依赖关系。该过程是交互式的。

maven-add-dependency.gif

您还可以通过Java Dependency Viewer添加依赖关系,该该扩展同样可以调用Maven命令来完成添加。

maven-add-dependency-2.gif

执行Maven命令和目标(goal )

通过右键单击资源管理器中的每个Maven Projects,您可以方便地运行Maven目标(goal )。

maven-run.gif

该扩展程序还保留了每个项目的 goal 历史记录,因此您可以快速重新运行上一个命令,这在运行长的自定义 goal 时非常有用。

重新运行 goal 有两种方法:

  1. 命令面板>选择 Maven: History > 选择项目 > 从历史记录中选择命令。
  2. 右键单击项目 > 单击 History > 从历史记录中选择命令。

maven-history.gif

您还可以在设置中指定自己喜欢的命令,以供将来执行。

maven-favorite-command.gif

要调试Maven目标,请右键单击目标并开始调试。Maven扩展将使用正确的参数调用Java调试器。这是一个方便,省时的功能。

debug-maven-plugin-goals.gif

从Maven原型生成项目

此扩展提供的另一个方便的功能是从 Archetype 生成Maven项目。该扩展程序加载在本地/远程目录中列出的原型。选择后,分机将发送mvn archetype:generate -D...到终端。

有两种方法可以生成Maven项目:

  1. 从命令面板中,输入Maven: Generate from Maven Archetype,( Maven:从Maven原型生成) 。
  2. 右键单击一个文件夹,然后选择 Generate from Maven Archetype (" 从Maven原型生成")。

maven-archetype.gif

构建状态

当您在Visual Studio Code中编辑Java源代码时,需要 Java language server 在后台构建您的工作区以为您提供必要的语言功能。单击右下角状态栏中的 language server 状态栏图标(正在构建时是转圈的图标🔄,当构建完成时是一个赞的大拇指图标👍),可以查看详细的构建任务状态,并观察幕后情况。

java.build.status.gif

除了Maven,如果您使用Bazel来构建和测试您的项目,那么还会有一个Bazel扩展

参考

VS Code中的Java项目管理:Maven Support, Java Package, and Dependency Management in Visual Studio Code

您的鼓励是我最大的动力
alipay QR Code

Felix
作者
Felix
如无必要,勿增实体。

3

目录