当默认的工程结构不适用时,就可能需要去配置它.根据Gradle文档,根据下面的代码可以重新配置Java工程的sourceSets:
sourceSets {
main {
java {
srcDir 'src/java'
}
resources {
srcDir 'src/resources'
}
}
}
注意: srcDir将会被添加到已存在的源文件目录中(这个在Gradle文档中没有提到,但是实际上确实是这样执行了)
要替换默认的源文件目录,你需要使用一个数组路径的srcDirs来替代.下面是使用调用对象的另外一种不同的方法:
sourceSets {
main.java.srcDirs = ['src/java']
main.resources.srcDirs = ['src/resources']
}
想了解更多的信息,可以查看Gradle文档中Java插件部分.
Android插件使用了类似的语法,因为使用了它自己的sourceSets,这些配置会被添加到android对象中. 下面这个例子,使用了旧工程结构的main代码,并把androidTest的sourceSet映射到tests目录中.
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
androidTest.setRoot('tests')
}
}
注意:因为旧的结构把所有的源文件(java, aidl, renderscript, and java resources)放在同一个目录中,所以我们需要重新映射所有的sourceSet新组件到同一个src目录下.
注意:setRoot()会移动所有的sourceSet(包括它的子目录)到新的目录.例子中把src/androidTest/*移动到tests/*
这是在Android中特有的,在Java sourceSets中不起作用.
上述的就是工程迁移的简单示例.