Gradle
是源于 Apache Ant 和 Apache Maven 概念的项目自动化构建开源工具,它使用一种基于 Groovy 的特定领域语言 (DSL) 来声明项目设置,抛弃了基于 XML 的各种繁琐配置面向 Java 应用为主。当前其支持的语言暂时有 Java、Groovy、Kotlin、Scala、Android、C++ 和 Swift。 下面是 Gradle 和 Apache Maven 的一个比较:
配置 wrapper
推荐使用wrapper
的方式配置 Gradle 环境,便于保持项目环境统一,在项目根目录下添加gradle/wrapper/gradle-wrapper.properties
配置文件,详细配置见入门文档,配置内容如下:
1 distributionUrl =https\://services.gradle.org/distributions/gradle-${ihub.plugin.gradleVersion}-bin.zip
gradle-wrapper.jar、gradlew、gradlew.bat 文件可以通过命令自动生成,项目结构如下:
1 2 3 4 5 6 7 . ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew └── gradlew.bat
配置 setting.gradle
settings.gradle 与 Settings 实例对应,用来声明实例化和配置 Project,可以用于多项目管理以及项目插件版本等配置,配置示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 include 'foo:bar' include 'baz' project(':baz' ).projectDir = file('foo/baz' ) file('subprojects' ).eachDir { dir -> include dir.name project(":${dir.name}" ).projectDir = dir }
项目结构如下:
1 2 3 4 5 6 7 8 . ├── settings.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew └── gradlew.bat
配置 build.gradle
用于配置项目依赖、所需插件等,配置示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 plugins { id 'groovy-gradle-plugin' id 'maven-publish' } group = 'com.myorg.conventions' version = '1.0' repositories { gradlePluginPortal() } dependencies { implementation 'gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.6.2' testImplementation platform("org.spockframework:spock-bom:2.0-groovy-3.0" ) testImplementation 'org.spockframework:spock-core' testImplementation 'org.spockframework:spock-junit4' testImplementation 'junit:junit:4.13.1' } publishing { repositories { maven { url = layout.buildDirectory.dir("repo" ) } } } tasks.named('publish' ) { dependsOn('check' ) }
项目结构如下:
1 2 3 4 5 6 7 8 9 . ├── build.gradle ├── settings.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew └── gradlew.bat
配置 gradle.properties
用于配置一些 Gradle 环境属性,如:
1 2 3 4 5 org.gradle.parallel =true org.gradle.caching =true org.gradle.configureondemand =true org.gradle.daemon =false org.gradle.daemon.performance.enable-monitoring =false
项目结构如下:
1 2 3 4 5 6 7 8 9 10 . ├── gradle.properties ├── build.gradle ├── settings.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew └── gradlew.bat