gpt4 book ai didi

scala - 在 SBT 中无需编译即可获取完整的类路径

转载 作者:行者123 更新时间:2023-12-05 04:50:06 25 4
gpt4 key购买 nike

我需要一段使用 SBT 的代码,可能是内部代码,它在不调用编译的情况下获取 SBT 项目的完整类路径。通常我会使用“Runtime/fullClasspath”,但这需要先编译项目。有没有办法在不触发编译的情况下获取完整的类路径?我认为 build.sbt 单独确定了类路径,编译(理论上)不是必需的。

我在 SBT gitter channel 上问过,那里也提到使用 dependencyClasspath。 dependencyClasspath 不需要编译根项目,但它确实需要编译所有依赖项。所以这对我来说还没有解决。我正在寻找运行根项目所需的完整类路径,而不编译其组成部分。

我对任何解决此问题的方法都很感兴趣,所以如果有任何牵强附会的解决方法,我们也欢迎。

我现在拥有的一个例子:

Global / printMainClasspath := {
val paths = (rootProject / fullClasspath).value
val joinedPaths = paths
.map(_.data)
.mkString(pathSeparator)
println(joinedPaths)
}

这部分工作,它创建了一个打印完整类路径的任务“printMainClasspath”。但是如果我在 sbt shell 中调用它,它会先编译代码。我希望在不调用项目的完整编译的情况下打印类路径。理想情况下,只编译所有组成项目的所有 build.sbt。有办法吗?

最佳答案

val dryClasspath = taskKey[Seq[File]]("dryClasspath")

dryClasspath := {
val data = settingsData.value
val thisProj = thisProjectRef.value
val allProjects = thisProj +: buildDependencies.value.classpathTransitiveRefs(thisProj)
val classDirs = allProjects.flatMap(p => (p / Runtime / classDirectory).get(data))
val externalJars = (Runtime / externalDependencyClasspath).value.map(_.data)
classDirs ++ externalJars
}

关于scala - 在 SBT 中无需编译即可获取完整的类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67375499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com