我有两个使用scalajs的项目,其中第二个项目需要访问第一个项目的源。我定义第一个project.sbt,如下所示:
val commonSettings = Seq(
name := "project1",
unmanagedSourceDirectories in Compile +=
baseDirectory.value / ".." / "shared" / "src" / "main" / "scala",
)
val project1JS = project.in(file("js"))
.settings(commonSettings: _*)
.enablePlugins(ScalaJSPlugin)
val project1JVM = project.in(file("jvm"))
.settings(commonSettings: _*)
为了使项目2能够访问项目1的源,我定义其sbt如下:
val commonSettings = Seq(
name := "project2",
unmanagedSourceDirectories in Compile +=
baseDirectory.value / ".." / "shared" / "src" / "main" / "scala",
)
val project2JS = project.in(file("js"))
.settings(commonSettings: _*)
.configure(_.dependsOn(ProjectRef(uri("../project1"), "project1JS")))
.enablePlugins(ScalaJSPlugin)
val project2JVM = project.in(file("jvm"))
.settings(commonSettings: _*)
.configure(_.dependsOn(ProjectRef(uri("../project1"), "project1JVM")))
我的第二个项目可以正常编译,但是这带来了一个问题,因为我现在可以访问project1的类路径,这可能会导致冲突。例如,我收到警告,发现已找到多个logback.xml文件,并且错误的application.conf文件也可能被拾取。
是否有更好的方法来依赖project1的来源?
答案 0 :(得分:0)
我能想到的最好的替代解决方案是将unmanagedSourceDirectories设置添加到第二个项目中。例如,这样做:
val project2JVM = project.in(file("jvm"))
.settings(commonSettings: _*)
.settings(
unmanagedSourceDirectories in Compile +=
baseDirectory.value / ".." / ".." / "project1" / "shared" / "src" / "main" / "scala",
)
Project2现在可以访问Project1中的共享源,而无需访问其类路径上Project1的资源