Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何定义接受文件参数并返回文件的自定义SBT任务?_Scala_Sbt - Fatal编程技术网

Scala 如何定义接受文件参数并返回文件的自定义SBT任务?

Scala 如何定义接受文件参数并返回文件的自定义SBT任务?,scala,sbt,Scala,Sbt,我正在从事一个Scala项目,该项目要求我计算使用sbt assembly生成的jar文件的base64编码SHA-256哈希。我编写了一个简单的Scala方法来实现这一点: def computeCodeHash(file: File): File = { //..do some work and write the hash to a new file with a '.sha256' extension } 现在我需要创建一个SBT命令,我可以调用它来计算这个散

我正在从事一个Scala项目,该项目要求我计算使用
sbt assembly
生成的jar文件的base64编码SHA-256哈希。我编写了一个简单的Scala方法来实现这一点:

    def computeCodeHash(file: File): File = {
     //..do some work and write the hash to a new file with a '.sha256' extension
    }
现在我需要创建一个SBT命令,我可以调用它来计算这个散列。我希望能够做到以下几点:

    > codehash "target/scala-2.11/foo.jar"
并让该任务调用我的
computeCodeHash
方法。对于额外的自动积分,我还想知道如何扩展构建,以便
sbt assembly
插件创建的
assembly
任务也运行我的
computeCodeHash
方法

我试着通读有关输入任务、设置和解析器的文档,但我对SBT的知识有限,我无法理解如何完成看似相当基本的任务。我还试着阅读
sbt汇编
源代码,但我对它一无所知

任何指点都将不胜感激。

类似的东西?:

导入sbt.Keys_
进口sbt_
导入SBTAAssembly.AssemblyKeys_
对象构建扩展了sbt.Build{
私有def mkHash(路径文件:字符串):字符串={
println(s“在此处为:$pathToFile创建哈希”)
"??"
}
lazy val codehash=inputKey[选项[字符串]](“Mk哈希”)
val codehashTask=codehash:={
val s=streams.value
val args=sbt.complete.Parsers.spaceDelimited(“”)。已解析
args.headOption.map{path=>
s、 log.info(s“为:$path创建哈希”)
mkHash(路径)
}
}
lazy val root=Project(“sbt哈希任务”,文件(“.”)
.设置(
代码哈希任务,
(大会):={
val out=assembly.value
mkHash(out.getAbsolutePath)
出来
}
)
}
用法:

sbt
> codehash some/path.jar
> assembly //runs assembly and codehash

谢谢@ed,我有一些类似的东西,但不是很地道,我不知道如何将任务与
汇编集成。请注意,我确实在DefaultParsers中找到了一个fileParser,这很有用,因为它允许制表符完成知道参数是相对于基本目录的文件路径。