Gradle基础笔记

简介: 配置Gradle镜像为阿里云,修改`gradle-wrapper.properties`。使用`subprojects`管理父项目,设定编码为UTF-8。应用Spring Boot和依赖管理插件,子项目排除特定依赖,如`javax.servlet`。针对项目间依赖,使用`implementation`或`api`关键字。完整示例展示了多项目构建,包括仓库、依赖、源代码设置、任务和编码配置。

配置镜像

修改 gradle>wrapper>gradle-wrapper.properties

distributionUrl=https\://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.6-all.zip

配置父项目

使用 subprojects

编码问题处理

[compileJava, compileTestJava, javadoc].options.encoding = 'UTF-8'

依赖版本控制

增加使用插件

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

子项目排除依赖

使用configuration

    configurations {
        all*.exclude group: 'javax.servlet'
    }

项目之间依赖

使用compile关键字,不过目前Gradle版本对于compile不再支持了,可以使用api关键字或implementation关键字

    dependencies {
        implementation project(':sb-common')
    }

完整示例

buildscript {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://repo.spring.io/libs-milestone' }
    }
    dependencies {
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:3.2.2'
    }
}

group project_group
version project_version

def env = System.getProperty("env") ?: 'dev'
subprojects {
    apply plugin: 'java'
    apply plugin: 'java-library'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    sourceCompatibility = project_jdk
    targetCompatibility = project_jdk
    repositories {
        mavenLocal()
        maven {
            allowInsecureProtocol = true
            url = 'https://maven.aliyun.com/repository/public'
        }
        maven {
            allowInsecureProtocol = true
            url = 'https://repo.spring.io/libs-milestone'
        }
        mavenCentral()
    }
    //配置公共依赖
    dependencies {
        implementation 'org.springframework.boot:spring-boot-devtools'
    }
    sourceSets {
        main {
            java { srcDirs = ['src/main/java'] }
            resources { srcDirs = ['src/main/resources', "src/main/profiles/$env"] }
        }
        test {
            java { srcDirs = ['src/test/java'] }
            resources { srcDirs = ['src/test/resources'] }
        }
    }
    test {
        useJUnitPlatform()
    }
    task sourceJar(type: Jar, dependsOn: classes) {
        archiveClassifier = 'sources'
        from sourceSets.main.allSource
    }
    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }
    artifacts {
        archives sourceJar
    }
    gradle.taskGraph.whenReady {
        tasks.each { task ->
            if (task.name.contains('test')) {
                task.enabled = true
            }
        }
    }
    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
}

project('sb-web') {
    dependencies {
        implementation project(':sb-common')
    }
}

project('sb-common') {
    dependencies {
        api 'org.springframework.boot:spring-boot-starter-web'
    }
}
目录
相关文章
|
11天前
|
Java 程序员 API
Gradle笔记 二 Gradle的基础Groovy
Gradle笔记 二 Gradle的基础Groovy
48 0
|
11天前
|
Java 关系型数据库 MySQL
Gradle笔记 六 Gradle 中的Dependencies
Gradle笔记 六 Gradle 中的Dependencies
56 0
|
11天前
|
前端开发 Java Maven
Gradle笔记 七 publishing 项目发布(二)
Gradle笔记 七 publishing 项目发布
126 0
|
11天前
|
Java Maven
Gradle笔记 七 publishing 项目发布(一)
Gradle笔记 七 publishing 项目发布
71 0
|
11天前
|
存储 缓存 Java
Gradle笔记 八 Gradle 插件(二)
Gradle笔记 八 Gradle 插件
76 0
|
11天前
|
Java
Gradle笔记 八 Gradle 插件(一)
Gradle笔记 八 Gradle 插件
87 0
|
11天前
|
Java
Gradle笔记 五 Gradle 中的文件操作
Gradle笔记 五 Gradle 中的文件操作
22 0
|
11天前
|
存储 Java 测试技术
Gradle笔记 四 Gradle的核心 TASK(二)
Gradle笔记 四 Gradle的核心 TASK
45 0
|
11天前
|
Java Maven
Gradle笔记 四 Gradle的核心 TASK(一)
Gradle笔记 四 Gradle的核心 TASK
49 0
|
11天前
|
Java Maven 数据安全/隐私保护
Gradle笔记 三 Gradle的项目周期和settings 文件
Gradle笔记 三 Gradle的项目周期和settings 文件
57 0
Gradle笔记 三 Gradle的项目周期和settings 文件