使用 Artifactory 依赖项时 VS Code Java 语言支持中的“未解决的依赖项”/“无法解析导入”

Kon*_*ski 7 java artifactory gradle visual-studio-code

我们有一堆私有 Java 依赖项发布到 Artifactory。我们正在使用 Gradle 来构建我们的项目。

\n

问题是 VSCode 对 Java 的语言支持无法识别build.gradleJava 源代码中的依赖项/导入。

\n

注意:下面的所有代码片段均完全从源代码/VS Code 消息中复制粘贴,但公司域被替换为 mycompany.com 且 Artifactory 凭证被编辑。

\n

我在 Java 源代码中看到的错误是:

\n
The import com.mycompany.observability cannot be resolved\n
Run Code Online (Sandbox Code Playgroud)\n
MycompanyLogger cannot be resolved\n
Run Code Online (Sandbox Code Playgroud)\n

这是有错误的 Java 文件:

\n
package com.mycompany.sample;\n\nimport com.mycompany.observability.logging.MycompanyLogger;\n\npublic class SampleApplication {\n\n  public static void main(String[] args) {\n    MycompanyLogger.setServiceName("SERVICE_NAME");\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

以及以下错误build.gradle

\n
Unresolved dependency: com.mycompany:core-observability-spring:0.0.37\n
Run Code Online (Sandbox Code Playgroud)\n

这是build.gradle文件:

\n
plugins {\n    id 'io.spring.dependency-management' version '1.0.9.RELEASE'\n    id 'org.springframework.boot' version '2.3.4.RELEASE'\n    id 'java-library'\n    id 'application'\n    id 'checkstyle'\n    id 'pmd'\n    id 'jacoco'\n    id 'com.jfrog.artifactory' version "4.17.2"\n    id "org.sonarqube" version "3.0"\n}\n\ngroup = 'com.mycompany'\nversion = '0.0.1-SNAPSHOT'\n\njava {\n    sourceCompatibility = JavaVersion.VERSION_11\n    targetCompatibility = JavaVersion.VERSION_11\n}\n\nrepositories {\n    mavenLocal()\n    mavenCentral()\n}\n\njar.archiveBaseName = "sample-service"\nmainClassName = 'com.mycompany.sample.SampleApplication'\n\napply plugin: 'com.jfrog.artifactory'\napply plugin: "java"\n\nartifactory {\n    contextUrl = "https://artifactory.mycompany.com/artifactory/"\n    resolve {\n        repository {\n            repoKey = 'gradle-release'\n            username = project.findProperty('artifactory_user')\n            password = project.findProperty('artifactory_key')\n            maven = true\n        }\n    }\n}\n\ndependencies {\n    implementation('org.springframework.boot:spring-boot-starter-web')\n    implementation('org.springframework.boot:spring-boot-starter-aop')\n    implementation('org.codehaus.janino:commons-compiler:3.1.0') // Conditional expressions in logback\n    implementation('org.codehaus.janino:janino:3.1.0') // Conditional expressions in logback\n    implementation("ch.qos.logback:logback-classic:1.2.3")\n    implementation('net.logstash.logback:logstash-logback-encoder:6.3')\n    implementation('com.datadoghq:dd-java-agent:0.51.0')\n\n    implementation('com.mycompany:core-observability-spring:0.0.37')\n}\n\ncheckstyle {\n    toolVersion "8.29"\n    configFile = file("${rootDir}/config/checkstyle/google_checks.xml")\n}\n\njar {\n    enabled = true\n}\n\npmd {\n    ignoreFailures = false\n    ruleSetFiles = files("config/pmd/mycompany_custom_ruleset.xml")\n    ruleSets = []\n    sourceSets = []\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的目录中的相关文件~/.gradle/

\n
\xe2\x9e\x9c  .gradle cat gradle.properties\nartifactory_user=<redacted>\nartifactory_key=<redacted>\n
Run Code Online (Sandbox Code Playgroud)\n
\xe2\x9e\x9c  .gradle cat init.gradle.kts  \nsettingsEvaluated {\n    pluginManagement {\n        val artifactory_user: String? by settings\n        val artifactory_password: String? by settings\n        val artifactory_key: String? by settings\n\n        repositories {\n            maven(url = "https://artifactory.mycompany.com/artifactory/gradle-release") {\n                credentials {\n                    username = artifactory_user\n                    password = artifactory_password ?: artifactory_key\n                }\n            }\n            gradlePluginPortal()\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

最后,这是我.vscode这个项目的配置文件:

\n
\xe2\x9e\x9c  .vscode git:(vscode-settings) cat settings.json \n{\n    "[java]": {\n        "editor.formatOnSave": false,\n    },\n    "editor.formatOnSave": true,\n    "files.insertFinalNewline": true,\n    "files.trimFinalNewlines": true,\n    "files.trimTrailingWhitespace": true,\n    "terminal.integrated.scrollback": 10000,\n    "java.configuration.updateBuildConfiguration": "automatic",\n    "java.import.gradle.enabled": true,\n    "java.import.gradle.wrapper.enabled": true,\n    "java.import.maven.enabled": false,\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\xe2\x9e\x9c  .vscode git:(vscode-settings) cat extensions.json \n{\n    "recommendations": [\n        "gabrielbb.vscode-lombok",\n        "pivotal.vscode-spring-boot",\n        "richardwillis.vscode-gradle-extension-pack",\n        "vscjava.vscode-java-pack"\n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

使用以下命令编译应用程序时一切正常./gradlew build

\n
\xe2\x9e\x9c  sample-service git:(master) \xe2\x9c\x97 ./gradlew build\n\nBUILD SUCCESSFUL in 5s\n11 actionable tasks: 8 executed, 3 up-to-date\n
Run Code Online (Sandbox Code Playgroud)\n

关于调试这个问题的下一步应该是什么有什么想法吗?

\n

小智 13

我遇到了同样的问题,对我有帮助的是跑步

Java: Clean Java Language Server WorkspaceCommand Palette

在此输入图像描述

看来 Java Language Server 仍保留旧版本。