Android gradle SourceSets介绍与使用
java插件引入了一个概念叫做SourceSets,通过修改SourceSets中的属性,可以指定哪些源文件(或文件夹下的源文件)要被编译,哪些源文件要被排除。Gradle就是通过它实现Java项目的布局定义。
SourceSets目录结构是固定的Java的标准项目目录布局
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']
jniLibs.srcDirs = ['libs']
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
那么如何进行修改?
sourceSets {
main {
java {
srcDir 'src/java' // 指定源码目录
}
resources {
srcDir 'src/resources' //资源目录
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
1.我们可以在sourceSets中配置指定的Manifest文件(例如在组件化开发中, 我们需要针对debug与release模式下, 指定不同的Manifest文件)
sourceSets {
main {
if (isDebug.toBoolean()) {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/release/AndroidManifest.xml'
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.如果我想要加一些我需要的java文件,但我们还不想按照java标准的文件夹结构
sourceSets {
main {
java {
srcDir 'src/myJavaPath'
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
3.如果我想在打包的时候, 不包含某些文件, 可以如下进行设置
sourceSets {
main {
java {
exclude '/test/**' // 不想包含文件的路径
}
resources {
exclude '/resource/**' // 不想包含的资源文件路径
}
.....
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
官方对SourceSets各项的介绍:
转自:https://blog.****.net/lbcab/article/details/72771729
java插件引入了一个概念叫做SourceSets,通过修改SourceSets中的属性,可以指定哪些源文件(或文件夹下的源文件)要被编译,哪些源文件要被排除。Gradle就是通过它实现Java项目的布局定义。
SourceSets目录结构是固定的Java的标准项目目录布局