3

Scala Swing アプリケーションを個別のモジュールに抽出しています。Scala Libraryまた、Scala Swing も含まれているため、IDE からの をクラスパスに含めたくありません。

以下を変更しました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に私を助けることができますか?

4

1 に答える 1

0

私がしなければならなかったことは、私の 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)
      ....
于 2014-03-16T22:51:22.960 に答える