无法解决 Kotlin Notebook 中的 mavenLocal 依赖关系,而该依赖关系在 IntelliJ 中可以正常工作

问题描述 投票:0回答:1

TL;DR:在 Kotlin Notebook 中使用时,IntelliJ 项目可访问的 mavenLocal 依赖项无法正确解析。为什么?

我有一个本地 Kotlin 依赖项

com.rough4:rough4:0.0
,出于说明目的,它在全局范围内公开了 println 重复项
myPrintln(msg:String)
。构建依赖项并将其发布到
mavenLocal
存储库(位于
/home/user/.m2/repository
,jar 位于
/home/user/.m2/repository/com/rough4/rough4/0.0/rough4-0.0.jar
)。

//rough4/build.gradle.kts
plugins {
    kotlin("jvm") version "2.0.0"
    `maven-publish`
}
group = "com.rough4"
version = "0.0"

repositories {
    mavenCentral()
    mavenLocal()
}

kotlin {
    jvmToolchain(21)
}

java{
    withSourcesJar()
    withJavadocJar()
}

publishing{
    publications {
        create<MavenPublication>("Testing"){
            from(components["java"])
        }
    }
}
//rough4/src/main/kotlin/localFuncs.kt
fun myPrintln(msg:String){
    println(msg)
}

当通过

jvmToolchain
在规范的 IntelliJ 项目(具有匹配的
dependencies { implementation("com.rough4:rough4:0.0") }
版本和 gradle 版本 8.5)中使用时,
rough4
依赖项会解析,我可以使用
myPrintln
。这表明发布过程正常运行。

但是,通过添加到Kotlin Notebook

时无法解决
//annotation based syntax
@file:Repository("*mavenLocal")
@file:DependsOn("com.rough4:rough4:0.0")
import myPrintln 
//Line_3.jupyter.kts (4:8 - 17) Unresolved reference: myPrintln

我尝试过使用

@file:Repository("/home/user/.m2/repository")
file://
以及 类似 gradle 的语法 - 没有任何效果。

//gradle based syntax
USE{
    repositories { 
        mavenCentral()
        mavenLocal() 
    }
    dependencies { implementation("com.rough4:rough4:0.0") }
}

发生什么事了?

奇怪的是,将依赖项添加到封装项目的 build.gradle.kts(创建并打开 Kotlin Notebook 的 IntelliJ 项目,而不是说通过 jupyter CLI 在外部独立打开),使其在Kotlin Notebook,其中

myPrintln
即可访问。

kotlin gradle intellij-idea kotlin-notebook
1个回答
0
投票

最有可能的问题是您请求的符号位于根包内。并且有相应的bug。 https://youtrack.jetbrains.com/issue/KTNB-709/Symbols-from-the-root-package-inside-the-libraries-are-not-resolved-on-the-kernel-side

解决方法:将符号移至非根包

© www.soinside.com 2019 - 2024. All rights reserved.