# 配置项目结构
当默认的项目结构不适用时,就可能需要去配置它。根据 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 插件](http://gradle.org/docs/current/userguide/java_plugin.html) 部分.
Android 插件使用了类似的语法,因为使用了它自己的 sourceSet,这些配置会被添加到 **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 特有的 sourceSets 在 Java sourceSets 中不起作用.
上述的就是项目迁移的简单示例.
- 译者序
- 简介
- 新构建系统的目标
- 为什么使用 Gradle?
- 配置要求
- 基础项目
- 构建文件示例
- 项目结构
- 配置项目结构
- 构建任务
- 通用任务
- Java 项目的 Task
- Android Tasks
- 基本的构建定制
- Manifest 属性
- 构建类型
- 签名配置
- 运行 ProGuard
- 清理资源
- 依赖、Library 和多项目
- 包依赖
- 本地包依赖
- 远程包依赖
- 多项目设置
- Library 项目
- 创建 Library 项目
- 普通项目和 Library 项目的区别
- 引用 Library 项目
- Library 项目发布
- 测试
- 单元测试
- 基本知识和配置
- 运行测试
- 测试 Android Library 项目
- 测试报告
- 独立项目
- 多项目报告
- Lint 支持
- 构建 Variants(变种)版本
- 产品定制
- 构建类型+产品定制=构建变种版本
- 产品定制的配置
- 源组件和依赖
- 构建和任务
- 测试
- 多定制的变种版本
- 高级构建的自定义
- 构建选项
- Java 编译选项
- aapt 选项
- dex 选项
- 操作 task
- 构建类型和产物定制的属性引用
- 使用sourceCompatibility 1.7
- 附录
- ApplicationId 与 packageName