3.2.1 配置结构
当默认的工程结构不适用的时候,你可能需要配置它。根据 Gradle 文档说明,可以通过如下方式重新配置Java工程的 sourceSets:
1. sourceSets {
2. main {
3. java {
4. srcDir 'src/java'
5. }
6. resources {
7. srcDir 'src/resources'
8. }
9. }
10. }
注意: srcDir 会添加指定的文件夹到现有的源文件夹列表中( Gradle 文档没有提到这个,但是的确是这样)。
要替换默认的源文件夹的话,可以给 srcDirs 指定一个路径数组 。下面使用对象调用另一种方式配置:
1. sourceSets {
2. main.java.srcDirs = ['src/java']
3. main.resources.srcDirs = ['src/resources']
4. }
想要了解更多的信息,请参考Gradle文档的Java插件部分。
Android插件也使用相似的语法,但是它有它自己的 sourceSets ,这些已经内置在 android 对象中了。
这儿有个示例,它使用了旧工程结构的源代码,并且重新映射了 androidTest sourceSet 到测试文件夹:
1. android {
2. sourceSets {
3. main {
4. manifest.srcFile 'AndroidManifest.xml'
5. java.srcDirs = ['src']
6. resources.srcDirs = ['src']
7. aidl.srcDirs = ['src']
8. renderscript.srcDirs = ['src']
9. res.srcDirs = ['res']
10. assets.srcDirs = ['assets']
11. }
13. androidTest.setRoot('tests')
14. }
15. }
注意: 因为旧结构中把所有的源文件( java, aidl, renderscript, and java resources )都放在同一文件夹下,所以我们需要重新映射这些 sourceSet 的新组件到同一src目录.
注意: setRoot()方法会移动整个 sourceSet (包括其下的子文件夹)到一个新文件夹。这里是移动src/androidTest/*到tests/*。
这些都是 Android 特有的,并不适用于 Java sourceSets 。
这是一个迁移的例子(译者注:比如从旧工程结构迁移过来)。
