首页 > 解决方案 > 在 sbt 中查找另一个项目的 classDirectory

问题描述

我有一个看起来像这样的项目:

构建.sbt

lazy val data = project in file("testData")

lazy val foo = (project in file("foo")).dependsOn(data % "test->test")

lazy val bar = (project in file("bar")).dependsOn(data % "test->test")

一些代码需要从文件中读取数据,而不是作为类路径上的资源。鉴于这些依赖关系,数据 jar 不会自动更新,所以我需要复制数据的 classes 目录。定义一个任务IO.copyDirectory应该这样做,但我需要做一些事情,比如data.classesDirectory知道从哪里复制。

我可以data.base + target/scala-2.12/classes,但这会硬编码几个假设。2.12 可以替换为scalaBinaryVersion,但是仍然有一堆看起来很难硬编码的部分。

data.settings看起来像一个可能的候选人,但尝试使用它会给出一个模棱两可的方法警告:

error: ambiguous reference to overloaded definition,
both method settings in trait Project of type (ss: sbt.Def.SettingsDefinition*)sbt.Project
and  method settings in trait ProjectDefinition of type => Seq[sbt.Def.Setting[_]]
match expected type Any
        println("settings: " + data.settings)
                                         ^

data.configurations看起来也很有用,但它是一个空列表。

我如何以show data/classDirectory编程方式进行等效操作?

标签: sbt

解决方案


推荐阅读