gpt4 book ai didi

scala - 从 sbt 中的依赖项获取资源文件

转载 作者:行者123 更新时间:2023-12-01 11:32:08 24 4
gpt4 key购买 nike

我有一个 sbt-web具有一些 webjar 和常见 jar 依赖项的项目。我想从我的 jar 依赖项之一获取资源文件并在 concatenation 中使用它任务。但我不知道如何在我的 build.sbt 中引用依赖 jar 中的资源。

最佳答案

我终于用 this 找到了解决方案文档。主要思想是在类路径依赖项中找到正确的 jar,将其解压缩到临时文件夹并使用这些文件执行您需要的操作。在我的情况下,我将它复制到我的目标目录并在连接任务中使用它。

我最终得到了这个代码:

def copyResourceFromJar(classpathEntry: Attributed[File], jarName: String, resourceName: String) = {
classpathEntry.get(artifact.key) match {
case Some(entryArtifact) => {
// searching artifact
if (entryArtifact.name.startsWith(jarName)) {
// unpack artifact's jar to tmp directory
val jarFile = classpathEntry.data
IO.withTemporaryDirectory { tmpDir =>
IO.unzip(jarFile, tmpDir)
// copy to project's target directory
// Instead of copying you can do any other stuff here
IO.copyFile(
tmpDir / resourceName,
(WebKeys.webJarsDirectory in Assets).value / resourceName
)
}
}
}
case _ =>
}
}
for(entry <- (dependencyClasspath in Compile).value) yield {
copyResourceFromJar(entry, "firstJar", "firstFile.js")
copyResourceFromJar(entry, "secondJar", "some/path/secondFile.js")
}

此代码应放置在任务中。例如:
val copyResourcesFromJar = TaskKey[Unit]("copyResourcesFromJar", "Copy resources from jar dependencies")
copyResourcesFromJar := {
//your task code here
}
copyResourcesFromJar <<= copyResourcesFromJar dependsOn (dependencyClasspath in Compile)

并且不要忘记将此任务作为依赖项添加到您的构建任务中。就我而言,它看起来像这样:
concat <<= concat dependsOn copyResourcesFromJar

关于scala - 从 sbt 中的依赖项获取资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31406471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com