Scala 在sbt中从sbt.package.File转换为java.io.File
我正在为SBT扩展Jan Berkel的Android插件 现在,我想知道如何将Scala 在sbt中从sbt.package.File转换为java.io.File,scala,sbt,sbt-android-plugin,Scala,Sbt,Sbt Android Plugin,我正在为SBT扩展Jan Berkel的Android插件 现在,我想知道如何将sbt.SettingKey[sbt.package.File]转换为java.io.File?有没有办法从sbt.SettingKey[sbt.package.File]中提取java.io.File 例如: 我有一个功能: def isUpToDate(input: java.io.File): Boolean 它需要java.io.File作为参数 我有一个sbt.SettingKey[sbt.package
sbt.SettingKey[sbt.package.File]
转换为java.io.File
?有没有办法从sbt.SettingKey[sbt.package.File]
中提取java.io.File
例如:
我有一个功能:
def isUpToDate(input: java.io.File): Boolean
它需要java.io.File
作为参数
我有一个sbt.SettingKey[sbt.package.File]
(名为myFileKey
),它映射到我需要的文件
当文件映射到myFileKey
时,如何调用isupdate
?您需要使用编写一个关于更新问题的依赖项。我仍然假设您正在修改现有的sbt插件。因此,仍然需要引入依赖项。设置键的值仅在构建过程的特定阶段有效。因此,要检索该值,需要依赖于设置键
请阅读中的“任务键”部分,以决定您是需要依赖普通设置键(静态)还是依赖另一个任务的结果(动态)。在我看来,您的是最新的可能需要反复评估。因此,您需要一项任务
val isUpToDate = TaskKey[Boolean]("isUpToDate", "Description")
val settings = Seq[Setting[_]](
// ....
isUpToDate <<= fileKey.map(checkUpToDate)
)
private def checkUpToDate(f: File): Boolean = { ... }
val isUpToDate=TaskKey[Boolean](“isUpToDate”、“Description”)
val设置=顺序[设置[]](
// ....
isUpToDate出于好奇:声明的sbt.package.File
在哪里?我快速搜索了源代码(0.13分支,cbc94f9cb6),但没有找到任何这样的声明。它在0.11分支中,仅仅是一个类型别名(package object sbt{…type File=java.io.File…}
),但这不会简单地返回另一个键给我[什么]?抱歉问了这么多愚蠢的问题,我是Scala的新手/SBT@Lopina,它将把它变成一个键[Something]
。但是,作为一个副作用,您可以使用该文件来做一些事情。是的,它定义了在给定文件上工作的您自己任务的键。您需要更具体地说明如何使用它。
yourKey <<= fileKey.apply { file => ... }
val yourKey = SettingKey[File]("yourKey", "Description")
val settings = Seq[Setting[_]](
// ....
yourKey <<= fileKey { f => f / "subdirectory" }
)
val isUpToDate = TaskKey[Boolean]("isUpToDate", "Description")
val settings = Seq[Setting[_]](
// ....
isUpToDate <<= fileKey.map(checkUpToDate)
)
private def checkUpToDate(f: File): Boolean = { ... }