且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SBT:排除资源子目录

更新时间:2022-10-20 07:44:44

From https://github.com/sbt/sbt-jshint/issues/14

excludeFilter in unmanagedResources:= {
val public =((compile中的resourceDirectory).value /com/example/export/dev)。 getCanonicalPath
新的SimpleFileFilter(_。getCanonicalPath startsWith public)
}


I've been using Gradle for most of my Scala projects, but I want to evaluate the suitability of SBT as a replacement. One of the things I've done in Gradle is to exclude a certain resource directory from the final build (for example, using CoffeeScript to write JavaScript files that will be included as final resources).

In Gradle, I'd do this by:

sourceSets {
    main {
        resources {
            exclude 'com/example/export/dev' // exclude development resources
        }
    }
}

And this would exclude the resource package com.example.export.dev package from the final build.

How would I do the same in SBT? I've tried

unmanagedResourceDirectories in Compile -= (resourceDirectory in Compile).value / "com/example/export/dev"

but that doesn't do a thing (I understand why, but that doesn't really help). And the documentation on the SBT web site only talks about excluding file patterns (at Classpaths, sources, and resources).

As a more descriptive image, say we have the following resource directory structure:

com
\---example
     \---export
         \---dev
         \---something

In the final output, I want:

com
\---example
    \---export
        \---something

From https://github.com/sbt/sbt-jshint/issues/14:

excludeFilter in unmanagedResources := {
  val public = ((resourceDirectory in Compile).value / "com" / "example" / "export" / "dev").getCanonicalPath
  new SimpleFileFilter(_.getCanonicalPath startsWith public)
}