【问题标题】:Copy sources files into target directory with SBT使用 SBT 将源文件复制到目标目录
【发布时间】:2011-04-15 07:40:27
【问题描述】:

我最近决定使用 SBT 来构建现有项目。 在这个项目中,我需要在编译阶段复制的 scala 包中有一些 .glsl 文件。

项目结构如下:

- myapp.opengl
   - Shader.scala
- myapp.opengl.shaders
   - vertex_shader.glsl
   - fragment_shader.glsl

这个文件结构对于 SBT 是否正确,或者我是否需要将 .glsl 文件放入其他目录。你知道将这些文件复制到目标文件夹的干净方法吗?

我不希望将这些文件放入资源目录,因为它们是(未编译的)源文件

谢谢

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    我不建议将这些文件放入src/main/scala,因为它们不属于那里。如果您想将它们与资源文件分开,可以将它们放在自定义路径中,例如src/main/glsl 并将以下几行添加到您的项目定义中,以将它们复制到输出目录中:

    val shaderSourcePath = "src"/"main"/"glsl"
    
    // use shaderSourcePath as root path, so directory structure is
    // correctly preserved (relative to the source path)
    def shaderSources = (shaderSourcePath ##) ** "*.glsl"
    
    override def mainResources = super.mainResources +++ shaderSources
    

    【讨论】:

    • @Mr_Qqn 我对我的 Java 项目有一种相同的要求,我无法弄清楚我们需要对 sbt 的哪个项目配置文件进行更改(另外我没有任何经验Scala 也是如此)
    • 你能用 webappResources 做同样的事情吗?我知道有一个 webappPath 变量可以更改,但我找不到任何关于可用于合并来自多个文件夹的资源的 webappResources 的提及。
    • 这个放在哪个文件里?
    • "override def mainResources" 似乎不被 build.sbt 接受。使用 build.sbt 而不是 build.scala 时应该怎么做?
    猜你喜欢
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多