我有两个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"
并删除includeFilter
和excludeFilter
。这会正确添加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.>