2016-12-02 7 views
1

2つの別々のプロジェクトAとBがあります。どちらもScalaJSのデフォルトのクロスコンパイルプロジェクト配線方法を使用しています(ここではhttps://www.scala-js.org/doc/project/cross-build.html参照)。SBTクラスパスのScalJSクロスコンパイルプロジェクトへの依存

今、私はこれと同様にBからAへのSBTクラスパスの依存関係を追加する:プロジェクトBのjs一部は、プロジェクトAのjsshared部品を使用することができ

projectA.dependsOn(projectB) 

私はupickleを使用していたようjvm部分は私のデータをシリアル化するためのプロジェクトA.

jvmshared部分にアクセスすることができ、私はちょうどとして、プロジェクトA(のpublishLocallibraryDependenyを使用することはできませんは、私の場合はプロジェクトAに関するコンパイル時の情報が必要です)。

どうすればこの問題を解決できますか?同じビルドでCrossProject年代については

+0

'CrossProject'の間のデフォルトの' .dependsOn'は、あなたにその動作を正確に与えるべきです。 – sjrd

+0

普通のルートプロジェクトのような 'uri'から' CrossProject'をビルドすることができますので、リモートのgitリポジトリから引き出すことができますか? CrossProjectのドキュメントは実際には最小限で、まだファクトリメソッド/コンストラクタが見つかりませんでした。 –

+0

'CrossProject'は' build.sbt'内に2つのsbtプロジェクトを作成するファクトリです.JVM用、JavaScript用、いくつかの設定と他の定義を共有しています。この時点でリモートリポジトリからの引き出しはありません。あなたがしようとしていることを明確にすることはできますか? – ebruchez

答えて

2

、あなたは単に.dependsOnを使用することができます。

lazy val a = crossProject 
lazy val b = crossProject.dependsOn(a) 

// snip aJS, aJVM, bJS, bJVM 

は現在、RootProjectのようなURI /ファイルからCrossProjectをインポートする方法はありません。しかし、は、2つの通常のsbtプロジェクトにすぎません。私たちはあなたからこれを抽象化CrossProjectRefを作成することはできません理由はそこにいないようだということ

// a.sbt 

lazy val a = crossProject 
lazy val aJS = a.js 
lazy val aJVM = a.jvm 

// b.sbt 

lazy val b = crossProject. 
    configureJS(_.dependsOn(aJS)). 
    configureJVM(_.dependsOn(aJVM)) 

lazy val aJS = ProjectRef(file("projectA"), "aJS") 
lazy val aJVM = ProjectRef(file("projectA"), "aJVM") 

注:あなたは、個別にこれらをインポートすることができます。ですから、これが頻繁に必要な場合は、open an issueまでお気軽にお問い合わせください。

関連する問題