【发布时间】:2021-02-14 10:29:53
【问题描述】:
我们有一堆发布到 Artifactory 的私有 Java 依赖项。我们正在使用 Gradle 来构建我们的项目。
问题在于 VSCode Language Support for Java 无法识别 build.gradle 或我们的 Java 源代码中的依赖项/导入。
注意:下面的所有 sn-ps 都是完全从源代码/VS Code 消息中复制粘贴的,除了公司域被替换为 mycompany.com 并且 Artifactory 凭据被编辑。
我在 Java 源代码中看到的错误是:
The import com.mycompany.observability cannot be resolved
MycompanyLogger cannot be resolved
这是有错误的 Java 文件:
package com.mycompany.sample;
import com.mycompany.observability.logging.MycompanyLogger;
public class SampleApplication {
public static void main(String[] args) {
MycompanyLogger.setServiceName("SERVICE_NAME");
}
}
还有build.gradle中的错误:
Unresolved dependency: com.mycompany:core-observability-spring:0.0.37
这是build.gradle 文件:
plugins {
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'java-library'
id 'application'
id 'checkstyle'
id 'pmd'
id 'jacoco'
id 'com.jfrog.artifactory' version "4.17.2"
id "org.sonarqube" version "3.0"
}
group = 'com.mycompany'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
repositories {
mavenLocal()
mavenCentral()
}
jar.archiveBaseName = "sample-service"
mainClassName = 'com.mycompany.sample.SampleApplication'
apply plugin: 'com.jfrog.artifactory'
apply plugin: "java"
artifactory {
contextUrl = "https://artifactory.mycompany.com/artifactory/"
resolve {
repository {
repoKey = 'gradle-release'
username = project.findProperty('artifactory_user')
password = project.findProperty('artifactory_key')
maven = true
}
}
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.springframework.boot:spring-boot-starter-aop')
implementation('org.codehaus.janino:commons-compiler:3.1.0') // Conditional expressions in logback
implementation('org.codehaus.janino:janino:3.1.0') // Conditional expressions in logback
implementation("ch.qos.logback:logback-classic:1.2.3")
implementation('net.logstash.logback:logstash-logback-encoder:6.3')
implementation('com.datadoghq:dd-java-agent:0.51.0')
implementation('com.mycompany:core-observability-spring:0.0.37')
}
checkstyle {
toolVersion "8.29"
configFile = file("${rootDir}/config/checkstyle/google_checks.xml")
}
jar {
enabled = true
}
pmd {
ignoreFailures = false
ruleSetFiles = files("config/pmd/mycompany_custom_ruleset.xml")
ruleSets = []
sourceSets = []
}
以下是我的~/.gradle/ 目录中的相关文件:
➜ .gradle cat gradle.properties
artifactory_user=<redacted>
artifactory_key=<redacted>
➜ .gradle cat init.gradle.kts
settingsEvaluated {
pluginManagement {
val artifactory_user: String? by settings
val artifactory_password: String? by settings
val artifactory_key: String? by settings
repositories {
maven(url = "https://artifactory.mycompany.com/artifactory/gradle-release") {
credentials {
username = artifactory_user
password = artifactory_password ?: artifactory_key
}
}
gradlePluginPortal()
}
}
}
最后,这是我的 .vscode 这个项目的配置文件:
➜ .vscode git:(vscode-settings) cat settings.json
{
"[java]": {
"editor.formatOnSave": false,
},
"editor.formatOnSave": true,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"files.trimTrailingWhitespace": true,
"terminal.integrated.scrollback": 10000,
"java.configuration.updateBuildConfiguration": "automatic",
"java.import.gradle.enabled": true,
"java.import.gradle.wrapper.enabled": true,
"java.import.maven.enabled": false,
}
➜ .vscode git:(vscode-settings) cat extensions.json
{
"recommendations": [
"gabrielbb.vscode-lombok",
"pivotal.vscode-spring-boot",
"richardwillis.vscode-gradle-extension-pack",
"vscjava.vscode-java-pack"
]
}
使用./gradlew build 编译应用程序时一切正常:
➜ sample-service git:(master) ✗ ./gradlew build
BUILD SUCCESSFUL in 5s
11 actionable tasks: 8 executed, 3 up-to-date
关于调试此问题的后续步骤有什么想法吗?
【问题讨论】:
-
它字面意思是说
Unresolved dependency: com.redacted:some-library:0.1.2还是你改了那个名字?因为如果包名本身已经“告诉人们太多”关于您的代码的信息,那么作为asking a good question 的一部分,创建一个minimal reproducible example,可以 显示而无需编辑。我们不关心您的代码,我们只关心帮助您解决问题。如果你不能展示你的真实代码,把你的代码简化为一个你验证过的玩具实现仍然会展示问题,然后就展示它。 -
感谢@Mike'Pomax'Kamermans 的反馈,非常公平。正如您可以想象的那样,创建一个最小的可重现示例需要几天时间。你说我上次编辑后清楚了吗?
-
其实我觉得我可以在这里做/分享更多。就可以了。
-
好的,完成 - 我认为这应该是相当不错的。感谢您的反馈@Mike'Pomax'Kamermans
-
您可以添加另一个也在 com.mycompany:core-observability-spring:0.0.37 的存储库下的依赖项,以检查您是否成功连接到它。如果连接成功,请检查依赖的名称和版本号是否有问题。更甚者,会不会是依赖本身有问题?
标签: java gradle visual-studio-code artifactory