zoukankan      html  css  js  c++  java
  • Gradle入门

    本人也是初次接触到 Gradle,之前一直用 Maven, 关于 Gradle 的运行原理及概念就不多说了,主要介绍一下,用 Gradle 如何实现 Maven 的各种功能吧。

    使用的 Gradle 版本是 7.2。

    主要的配置就是 gradle.build 这个文件。

    配置文档:https://docs.gradle.org/current/dsl/org.gradle.api.Project.html

    插件文档:https://docs.gradle.org/current/userguide/plugin_reference.html#plugin_reference

    常用命令:

    1. ./gradlew clean

    2. ./gradlew build

    3. ./gradlew publish

    一、使用阿里云的源

    单体项目:

    repositories {
        maven {
            url 'https://maven.aliyun.com/repository/public/'
        }
        mavenLocal()
        mavenCentral()
    }
    

    如果是包含子项目,则这样配置:

    allprojects {
        repositories {
            maven {
                url 'https://maven.aliyun.com/repository/public/'
            }
            mavenLocal()
            mavenCentral()
        }
    }
    

    其中配置了三个源,分别是阿里云源、本地仓库以及Maven中心仓库,下载 jar 包时会按照从上到下的顺序去下载 jar 包。

    二、添加依赖 & 排除依赖

    dependencies {
        implementation('org.springframework.boot:spring-boot-starter-web') {
            exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
        }
        implementation 'cn.hutool:hutool-all:5.7.16'
        implementation 'org.springframework.boot:spring-boot-starter-log4j2'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
    

    命令查看依赖项:gradle -q dependencies --configuration=compileClasspath

    三、配置 IDEA 编辑器自动下载 javadoc 包和 source 包

    plugins {
    	// 引入 idea 插件
        id 'idea'
    }
    
    idea {
        module {
            downloadJavadoc=true
            downloadSources=true
        }
    }
    

    四、生成本项目的 javadoc 包和 source 包

    plugins {
    	// 引入 java 插件
        id 'java'
    }
    
    java {
        withJavadocJar()
        withSourcesJar()
    }
    

    五、发布 jar 包到私服

    plugins {
    	// maven 插件已经废弃,这里使用新版的插件进行发布
        id 'maven-publish'
    }
    
    publishing {
        // 配置要发布的仓库
        repositories {
        	// 本地仓库
            mavenLocal()
            // 远程私服仓库
            maven {
                // 判断是否是测试版本
                if (!version.endsWith('SNAPSHOT')) {
                    // 此处直接使用 gradle.properties 中的 key 即可,此文件与 gradle.build 文件同级
                    // 注意 gradle.properties 文件不要上传到 git 上
                    url = releasesRepoUrl
                    // 私服认证需要
                    credentials {
                        username = releasesGradleUsername
                        password = releasesGradlePassword
                    }
                } else {
                    url = snapshotsRepoUrl
                    credentials {
                        username = snapshotsGradleUsername
                        password = snapshotsGradlePassword
                    }
                }
            }
        }
        
        // 配置发布的项目信息
        publications {
        	// 文档 https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html
            bootJava(MavenPublication) {
                // 可以在这里手动指定 groupId artifactId version,也会有默认值
                groupId = 'com.test'
                artifactId = 'gradle-demo'
                version = '1.0.0'
    
                // 上传三个 jar 包(针对于 SpringBoot 项目)
                artifact bootJar
                artifact sourcesJar
                artifact javadocJar
    
                // 补充一下 pom 文件的信息
                pom {
                    name = 'GradleDemoName'
                    description = 'A concise description of my library'
                    url = 'http://www.example.com/library'
                    licenses {
                        license {
                            name = 'The Apache License, Version 2.0'
                            url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }
                    developers {
                        developer {
                            id = 'wql'
                            name = 'WuQinglong'
                            email = 'snail.wu@foxmail.com'
                        }
                    }
                }
            }
        }
    }
    

    如果是普通 Java 项目的话,需要将下面这里进行替换

                artifact bootJar
                artifact sourcesJar
                artifact javadocJar
    

    替换为:

    			from components.java
    

    简单一行即可,就可以把 jar 包、javadoc 包和 source 包都发布到私服里,如果是 web 项目,需要引入插件

    plugins {
    	id 'war'
        id 'maven-publish'
    }
    

    则这里需要改为

    			from components.web
    

    总结一下就是 java 项目使用 'java' 插件,发布时使用 from components.java,而 web 项目使用 'war' 插件,发布时使用 from components.web,SpringBoot项目使用 org.springframework.boot 插件,发布时使用

                artifact bootJar
                artifact sourcesJar
                artifact javadocJar
    

    这个配置。

    还有一点,

    六、设置编码

    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }
    tasks.withType(Javadoc) {
        options.encoding = 'UTF-8'
    }
    

    七、设置Java版本

    // 设置 jdk 版本
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'
    

    八、跳过测试

    方法一:修改 gradle.build 文件

    test {
        enabled = false
        useJUnitPlatform()
    }
    

    方法二:

    ./gradlew build -x test

    ------------------------------我是博客签名------------------------------
    座右铭:不要因为知识简单就忽略,不积跬步无以至千里。
    版权声明:自由转载-非商用-非衍生-保持署名。
    本作品采用知识共享署名 4.0 国际许可协议进行许可。
    ----------------------------------------------------------------------
  • 相关阅读:
    js命名空间
    window安装node.js
    JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
    Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
    DIV+CSS两种盒子模型
    table中的tbody标签
    兼容获取元素的样式属性值
    Arch linux 使用心得
    763. 划分字母区间
    <Leetcode>93. 复原地址
  • 原文地址:https://www.cnblogs.com/wuqinglong/p/15606272.html
Copyright © 2011-2022 走看看