Gradle(二) 项目结构

本文介绍了Gradle项目的基本结构,包括主代码(mainsourcecode)与测试代码(testcode)的目录组织方式,并展示了如何通过Gradle配置自定义项目结构。
原文地址: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7
翻译:Android Studio 中文组(大锤译)

续Gradle(一)

项目结构

两大组件(source sets): main source code 和 test code. 它们分别在以下两个目录中:

-src/main/
-src/instrumentTest/

这两个目录里面,又分别有各自的代码源文件和资源文件。

-java/
-resources/

对于 Android plugin, 又有以下额外的目录:

-AndroidManifest.xml
-res/
-assets/
-aidl/
-rs/
-jni/

配置项目结构

根据Gradle文档说明,可以通过以下两个方法来重新配置项目结构。

sourceSets {
    main {
        java {
            srcDir 'src/java'
        }
        resources {
            srcDir 'src/resources'
        }
    }
}

或者:

sourceSets {
    main.java.srcDirs = ['src/java']
    main.resources.srcDirs = ['src/resources']
}


而Android的项目也类似,如下列所示:

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']
        }

        instrumentTest.setRoot('tests')
    }
}


注:setRoot这个方法将所有src/instrumentTest目录下的文件及文件夹移到了tests/目录下。
### Gradle 项目的标准目录结构 #### 单个项目布局 对于单个Gradle项目,典型的目录结构如下: - **`build/`**: 存放编译过程中产生的临时文件以及最终打包后的产物。此目录由Gradle自动生成并管理[^1]。 - **`src/main/java/` 或 `src/main/kotlin/`**: 放置应用程序的主要源代码。 - **`src/test/java/` 或 `src/test/kotlin/`**: 测试类所在的路径下放置单元测试和其他类型的自动化测试脚本。 - **`build.gradle`**: 定义了当前模块下的构建逻辑、依赖关系以及其他配置项的信息。 - **`settings.gradle`**: 配置整个项目的设置信息,在这里指定哪些子项目应该被纳入到总的构建流程之中[^4]。 #### 多项目布局实例 当涉及到多个相互关联的组件时,则会形成一个多模块化的工程架构。下面是一个简单的例子展示如何组织这样的项目: ``` Project root (顶级目录) ├── app/ │ ├── src/ │ │ └── main/ │ │ ├── java/ │ │ └── res/ │ └── build.gradle # 应用程序特定的构建脚本 └── lib/ ├── src/ │ └── main/ │ ├── java/ │ └── resources/ └── build.gradle # 库模块特有的构建描述符 └── settings.gradle # 整体项目的设定文件 ``` 在这个案例里,“app” 和 “lib” 是两个独立却又彼此联系着的部分;前者代表了一个完整的可执行应用,而后者则可能是一些共享库或者是工具集的形式存在。通过这种方式划分开来之后不仅有助于团队协作开发不同部分的功能特性,同时也方便单独对其进行版本控制和发布操作。 为了使这些子项目能够协同工作起来,还需要在根级别的 `settings.gradle` 文件内声明它们的存在并通过适当的方式加入依赖关系链表中去。 ```groovy // settings.gradle include ':app', ':lib' ``` 接着可以在各自的 `build.gradle` 中定义所需的外部资源或者其他内部构件间的引用关系。 ```groovy dependencies { implementation project(':lib') // 在 'app' 的 build.gradle 中添加这条语句即可实现对其它本地 module 的引用 } ``` 最后,可以通过命令行进入到顶层目录位置处输入像 `gradle clean build` 这样的指令来触发一次全面性的编译过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值