JaCoCo Android Gradle 插件使用教程
1. 项目的目录结构及介绍
jacoco-android-gradle-plugin/
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── README.md
├── settings.gradle
└── src
├── main
│ ├── groovy
│ │ └── com
│ │ └── arturdm
│ │ └── jacoco
│ │ └── android
│ │ ├── AndroidJaCoCoPlugin.groovy
│ │ └── AndroidJaCoCoPluginExtension.groovy
│ └── resources
│ └── META-INF
│ └── gradle-plugins
│ └── com.arturdm.jacoco-android.properties
└── test
└── groovy
└── com
└── arturdm
└── jacoco
└── android
└── AndroidJaCoCoPluginTest.groovy
目录结构介绍
- build.gradle: 项目的构建脚本。
- gradle: 包含 Gradle 包装器的相关文件。
- gradle.properties: Gradle 属性文件。
- gradlew 和 gradlew.bat: Gradle 包装器的可执行文件。
- README.md: 项目说明文档。
- settings.gradle: 项目的设置文件。
- src: 项目的源代码目录。
- main: 主代码目录。
- groovy: Groovy 代码目录。
- com.arturdm.jacoco.android: 插件的主要实现代码。
- resources: 资源文件目录。
- META-INF.gradle-plugins: 插件的属性文件。
- groovy: Groovy 代码目录。
- test: 测试代码目录。
- main: 主代码目录。
2. 项目的启动文件介绍
build.gradle
build.gradle
是项目的构建脚本,定义了项目的依赖、插件和其他构建配置。
plugins {
id 'groovy'
id 'maven-publish'
}
dependencies {
implementation gradleApi()
implementation localGroovy()
implementation 'com.android.tools.build:gradle:4.1.0'
}
publishing {
publications {
maven(MavenPublication) {
groupId = 'com.arturdm'
artifactId = 'jacoco-android-gradle-plugin'
version = '0.1.5'
from components.java
}
}
}
settings.gradle
settings.gradle
是项目的设置文件,定义了项目的名称和包含的模块。
rootProject.name = 'jacoco-android-gradle-plugin'
3. 项目的配置文件介绍
gradle.properties
gradle.properties
是 Gradle 属性文件,可以用来定义一些全局的属性值。
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
org.gradle.parallel=true
com.arturdm.jacoco-android.properties
com.arturdm.jacoco-android.properties
是插件的属性文件,定义了插件的入口类。
implementation-class=com.arturdm.jacoco.android.AndroidJaCoCoPlugin
AndroidJaCoCoPlugin.groovy
AndroidJaCoCoPlugin.groovy
是插件的主要实现类,定义了插件的行为和配置。
package com.arturdm.jacoco.android
import org.gradle.api.Plugin
import org.gradle.api.Project
class AndroidJaCoCoPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create('jacocoAndroid', AndroidJaCoCoPluginExtension)
project.afterEvaluate {
project.android.applicationVariants.all { variant ->
def variantName = variant.name.capitalize()
def testTaskName = "test${variantName}UnitTest"
def reportTaskName = "jacoco${variantName}TestReport"
project.tasks.create(