Hyperskill Kotlin学习中IntelliJ项目检查依赖失败问题
我正在JetBrains Hyperskill的Kotlin赛道完成第三个项目——Unit Converter(Heavy Duty Step 4/5),提交代码进行平台检查时出现构建失败,错误提示无法解析com.github.hyperskill:hs-test:release-SNAPSHOT依赖。已尝试Stack Overflow及JetBrains官方Wiki/FAQ中的解决方案,但均无效。
项目代码
package converter fun main() { loopcheck@ while (true) { var conversion: Double print("Enter what you want to convert (or exit): ") val userInput = readln() if (userInput == "exit") break@loopcheck val (originalNumber, originalUnit, convertedUnit) = userInputSplit(userInput) // Validating inputs/Enums + exception checks if (originalNumber == null) { println("Wrong number") continue@loopcheck } if (originalUnit == null && convertedUnit != null) { println("Conversion from ??? to $convertedUnit is impossible") continue@loopcheck } if (originalUnit != null && convertedUnit == null) { println("Conversion from $originalUnit to ??? is impossible") continue@loopcheck } if (originalUnit == null && convertedUnit == null) { println("Conversion from ??? to ??? is impossible") continue@loopcheck } if (originalUnit != null && convertedUnit != null) { if (originalUnit.type != convertedUnit.type) { println("Conversion from ${originalUnit.plural} to ${convertedUnit.plural} is impossible") continue@loopcheck } else { // Conversion Calculus conversion = originalNumber * originalUnit.ratio / convertedUnit.ratio // Check if the units are singular or plural val preUnitCheck = if (originalNumber == 1.0) originalUnit.singular else originalUnit.plural val postUnitCheck = if (conversion == 1.0) convertedUnit.singular else convertedUnit.plural // Prints final text println("$originalNumber $preUnitCheck is $conversion $postUnitCheck") } } } } // Function to organize userInput in 3 variables: Number Unit1 Unit2 fun userInputSplit(userInput: String): Triple<Double?, Unidade?, Unidade?> { val userInputArray = userInput.lowercase().split(" ") val originalNumber = try { userInputArray[0].toDouble() } catch (e: NumberFormatException) { null } val originalUnit = try { getUnit(userInputArray[1]) } catch (e: IllegalArgumentException) { null } val convertedUnit = try { getUnit(userInputArray[2]) } catch (e: IllegalArgumentException) { null } return Triple(originalNumber, originalUnit, convertedUnit) } // Function to set constant from Unidade for conversion based from User Input. fun getUnit(unit: String): Unidade = when (unit) { "m", "meter", "meters" -> Unidade.METER "km", "kilometer", "kilometers" -> Unidade.KILOMETER "cm", "centimeter", "centimeters" -> Unidade.CENTIMETER "mm", "millimeter", "millimeters" -> Unidade.MILLIMETER "mi", "mile", "miles" -> Unidade.MILE "yd", "yard", "yards" -> Unidade.YARD "ft", "foot", "feet" -> Unidade.FOOT "in", "inch", "inches" -> Unidade.INCH "g", "gram", "grams" -> Unidade.GRAM "kg", "kilogram", "kilograms" -> Unidade.KILOGRAM "mg", "milligram", "milligrams" -> Unidade.MILLIGRAM "lb", "pound", "pounds" -> Unidade.POUND "oz", "ounce", "ounces" -> Unidade.OUNCE // "degree celsius", "degrees celsius", "celsius", "dc", "c" -> Unit.CELSIUS // "degree fahrenheit", "degrees fahrenheit", "fahrenheit", "df", "f" -> Unit.FAHRENHEIT // "kelvin", "kelvins", "k" -> Unit.Kelvin else -> throw IllegalArgumentException ("Wrong Unit. Try Again.") } enum class Unidade (val short: String, val singular: String, val plural: String, val ratio: Double, val type: String ) { METER("m","meter", "meters", 1.0, "Length"), KILOMETER("km","kilometer", "kilometers", 1000.0, "Length"), CENTIMETER("cm","centimeter", "centimeters", 0.01, "Length"), MILLIMETER("mm", "millimeter", "millimeters", 0.001, "Length"), MILE("mi","mile", "miles", 1609.35, "Length"), YARD("yd","yard", "yards", 0.9144, "Length"), FOOT("ft","foot", "feet", 0.3048, "Length"), INCH("in","inch", "inches", 0.0254, "Length"), GRAM("g", "gram", "grams", 1.0, "Weight"), KILOGRAM("kg", "kilogram", "kilograms", 1000.0, "Weight"), MILLIGRAM("mg", "milligram", "milligrams", 0.001, "Weight"), POUND("lb", "pound", "pounds", 453.592, "Weight"), OUNCE("oz","ounce", "ounces", 28.3495, "Weight"); //CELSIUS("degree Celsius", "degrees Celsius", 1.0, "Temperature"), //KELVIN("Kelvin", "Kelvins", 1.0, "Temperature"), //FAHRENHEIT("degree Fahrenheit", "degrees Fahrenheit", 1.0, "Temperature") }
完整构建错误日志
Failed to launch checking
FAILURE: Build failed with an exception.
出错原因:
执行任务 ':Unit_Converter-task:compileTestKotlin' 失败。
评估任务 ':Unit_Converter-task:compileTestKotlin' 的 'filteredArgumentsMap' 属性时出错
无法解析 ':Unit_Converter-task:testCompileClasspath' 配置的所有文件。
找不到 com.github.hyperskill:hs-test:release-SNAPSHOT。
已在以下位置搜索:
- repo.maven.apache.org/maven2/com/github/hyperskill/hs-test/release-SNAPSHOT/maven-metadata.xml
- repo.maven.apache.org/maven2/com/github/hyperskill/hs-test/release-SNAPSHOT/hs-test-release-SNAPSHOT.pom
- jitpack.io/com/github/hyperskill/hs-test/release-SNAPSHOT/maven-metadata.xml
- jitpack.io/com/github/hyperskill/hs-test/release-SNAPSHOT/hs-test-release-v8-g6845035-132-v8-g6845035-132.pom
被以下项目依赖:
project :Unit_Converter-task
建议尝试:
使用 --stacktrace 参数获取堆栈跟踪。
使用 --info 或 --debug 参数获取更多日志输出。
使用 --scan 参数获取完整分析信息。
获取更多帮助:help.gradle.org
BUILD FAILED in 16s
Task :Unit_Converter-task:compileKotlin
Task :Unit_Converter-task:compileJava NO-SOURCE
Task :Unit_Converter-task:processResources NO-SOURCE
Task :Unit_Converter-task:classes UP-TO-DATE
Task :util:compileKotlin NO-SOURCE
Task :util:compileJava NO-SOURCE
Task :util:processResources NO-SOURCE
Task :util:classes UP-TO-DATE
Task :util:compileTestKotlin NO-SOURCE
Task :util:compileTestJava NO-SOURCE
Task :util:processTestResources NO-SOURCE
Task :util:testClasses UP-TO-DATE
Task :Unit_Converter-task:compileTestKotlin FAILED
2 actionable tasks: 2 executed
内容的提问来源于stack exchange,提问作者Rafael Moreira

