gpt4 book ai didi

scala - 在 sbteclipse 插件中使用 classpathTransformerFactories 来排除 Scala 库?

转载 作者:行者123 更新时间:2023-12-04 17:54:09 24 4
gpt4 key购买 nike

我正在将我的 Scala Swing 应用程序提取到单独的模块中。而且我不想在类路径中包含来自 IDE 的 Scala Library,因为它还包括 Scala Swing。

我更改了以下 classpathentry

<classpathentry
kind="con"
path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>

<classpathentry
sourcepath="C:\Users\wwagner\.ivy2\cache\org.scala-lang\scala-library\srcs\scala-library-2.10.3-sources.jar"
kind="lib"
path="C:\Users\wwagner\.ivy2\cache\org.scala-lang\scala-library\jars\scala-library-2.10.3.jar"/>

按预期工作,但我发现 sbteclipse 插件支持 classpathTransformerFactories,它可以自动完成。

classpathTransformerFactories 如何帮助我处理用例?

最佳答案

我必须做的是在我的 Build.scala 中实现以下内容

  // sbteclipse rewrite rules
object ClasspathentryRewriteRule extends RewriteRule {
override def transform(parent: Node): Seq[Node] = {
parent match {
case c @ <classpathentry/> if (c \ "@path").toString().endsWith("SCALA_CONTAINER") =>
val home = System.getProperty("user.home")
val base = s"""$home\\.ivy2\\cache\\org.scala-lang\\scala-library"""
val srcPath = s"""${base}\\srcs\\scala-library-${D.scalaVersion}-sources.jar"""
val path = s"""${base}\\jars\\scala-library-${D.scalaVersion}.jar"""
<classpathentry sourcepath={ srcPath } kind="lib" path={ path }/>
case other => other
}
}
}

// sbteclipse transformer
object ClasspathentryTransformer extends EclipseTransformerFactory[RewriteRule] {
override def createTransformer(ref: ProjectRef, state: State): Validation[RewriteRule] = {
ClasspathentryRewriteRule.success
}
}

在设置中以下代码完成了工作:

      ....
EclipseKeys.classpathTransformerFactories := Seq(ClasspathentryTransformer)
....

关于scala - 在 sbteclipse 插件中使用 classpathTransformerFactories 来排除 Scala 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22347946/

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