将自定义资源目录添加到SBT的默认unmanagedResourceDirectories

时间:2016-09-14 07:55:17

标签: scala sbt

我有两个SBT项目,如下所述。

├── Project 1
│    │
│    └── src
│         └── main
│               ├── scala
│               │     └── com
│               │           └── xyz
│               │                 └── <*.scala>
│               └── resources
│                      └── <Typesafe & Log4J config files> 
│   
│   
└── Project 2
     │
     ├── src
     │    └── main
     │          ├── scala
     │          │     └── com
     │          │           └── xyz
     │          │                 └── <*.scala>
     │          └── resources
     │                 └── <Typesafe & Log4J config files> 
     │
     ├── resources 
     │     └── <JS, HTML, Image files etc.> 
     ├── other-dir-1 
     │
     ├── other-dir-2 
     │
     └── other-dir-3

编译项目1(实际运行SBT exportedProducts任务)会生成以下目录结构。 unmanagedResourceDirectories指向Project1/src/main/resources。我相信这是默认resourceDirectory(如Customizing Paths中所述)。换句话说,默认资源目录中的文件由exportedProducts

自动添加
├── Project 1
     └── target
           └── scala-2.10
                 └── classes
                       ├── com
                       │    └── xyz
                       │         └── <*.class>
                       └── <Typesafe & Log4J config files>

对于Project 2,我希望exportedProducts生成以下目录结构。

├── Project 2
     └── target
           └── scala-2.10
                 └── classes
                       ├── com
                       │    └── xyz
                       │         └── <*.class>
                       ├── <Typesafe & Log4J config files>
                       │
                       └── resources 
                             └── <JS, HTML, Image files etc.> 

为此,我在适当的项目定义中将以下内容添加到SBT构建文件中。

unmanagedResourceDirectories in Compile += baseDirectory.value
excludeFilter in unmanagedResources := HiddenFileFilter || "other-dir-*" 
includeFilter in unmanagedResources :=
    new SimpleFileFilter(_.getCanonicalPath.startsWith((baseDirectory.value / "resources").getCanonicalPath))

这正确包含resources目录,但不包含Project2\src\main\resources中的文件。 target目录看起来像

├── Project 2
     └── target
           └── scala-2.10
                 └── classes
                       ├── com
                       │    └── xyz
                       │         └── <*.class>
                       └── resources 
                             └── <JS, HTML, Image files etc.> 

以某种方式添加自定义资源目录会掩盖默认资源目录的内容。我尝试了this SO post中提到的但未成功的内容。

我尝试的另一件事是设置unmanagedResourceDirectories in Compile += baseDirectory.value / "resources"并删除includeFilterexcludeFilter。这会正确添加Project2\src\main\resources的文件,但会添加文件和文件。从Project2\resources直接到Project2\target\scala-2.10\classes的目录。 target目录如下所示

├── Project 2
     └── target
           └── scala-2.10
                 └── classes
                       ├── com
                       │    └── xyz
                       │         └── <*.class>
                       ├── <Typesafe & Log4J config files>
                       │
                       └── <JS, HTML, Image files etc.> 

0 个答案:

没有答案