gradle篇

作者: wyc0859 | 来源:发表于2021-01-06 11:44 被阅读0次

    Gradle是一个基于 JVM 的富有突破性构建工具,核心在于基于 Groovy 的丰富而可扩展的域描述语言(DSL)
    projects 和 tasks是 Gradle 中最重要的两个概念。

    安装

    官网下载gradle 二进制包
    然后再配置环境变量
    GRADLE_HOM =D:\software\gradle-5.6.2
    再在path 里添加 %GRADLE_HOM%\bin
    打开cmd,输入 gradle -v 如果有显示gradle的版本信息就说明成功了

    任务

    gradle下载慢

    将项目中build.gradle文件中
    repositories {
        mavenCentral()
    }
    修改为阿里源:
    allprojects {
        repositories {
            google()
            jcenter()
            maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        }
    }
    注意要加上面的google()和jcenter(),否则会报错。
    

    或者

    allprojects {
        repositories {
    //        mavenCentral()
    //        jcenter()
    //        google()
            maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
            maven { url 'https://maven.aliyun.com/repository/google' }
            maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
            maven { url 'https://maven.aliyun.com/repository/jcenter'}
    
        }
    }
    

    groovy语法

    
    public class Projectversion {
        private int max;
        private int min   //groovy可以不用;
    
        public Projectversion(int min,int max) {
            this.max = max;
            this.min = min;
        }
        public int getmax(){
            max;  //可以省略return
        }
        public void setmax(int max){
            this.max = max;
        }
        //可以省略属性的set和get方法
    }
    
    Projectversion obj=new Projectversion(2,3);
    println obj.max;// 括号是可选的
    println obj.getmax();
    println "this is ${obj.min}"
    
    //***************************************
    //闭包
    def c1 = {
        v ->print v;
    }
    def c2 = {
        print "hello"
    }
    def method1(Closure closure){
        closure( 'xx')
    }
    def method2(Closure closure){
        closure()
    }
    method1(c1); //xx
    print "\n"
    method1(c2); //hello
    print "\n"
    method2(c1); //null
    print "\n"
    method2(c2); //hello
    

    gradle构建项目 生成src目录Task 目录

    点击右侧任务执行即可。

    def createDir = {
        path ->
            File dir = new File(path);
            if (!dir.exists()){
                dir.mkdirs();
            }
    }
    task makeJavaDir(){
        def paths=['src/main/java','src/main/resources','src/test/java','src/test/resources'];
        doFirst{
            paths.forEach(createDir);
        }
    }
    
    image.png

    Maven与Gradle互转

    Maven转Gradle
    gradle init --type pom
    然后重启一下项目,直接gradle build可能会报错(我的是报错了),重启的时候选择Gradle项目,就ok了

    gradle转maven
    apply plugin: 'maven'
    然后在gradle窗口的任务(Tasks)下的other中双击install,或者直接在Terminal中敲命令gradle install完成转换,然后在项目的build文件夹下即可看见pom文件,我运行时报错了说缺少项目的jar包,然后我运行了一下bootjar(build里面),打了jar包,就ok了


    compile与implementation区别

    在3.X版本中,compile 指令被标注为过时方法,而新增了两个依赖指令 implementation和api

    api

    完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。

    implementation

    这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。


    常见错误

    1、idea 新建项目没有gradle项
    2、gradle报错:Argument for @NotNull parameter 'o1' of com/intellij/openapi/external
    3、java 找不到符号:gradle中引入的lombok版本老了不支持,换成1.18.2
    implementation 'org.projectlombok:lombok:1.18.2'
    4、not find zip:


    image.png

    以上2个问题确定安装了gradle,那就一定是idea安装不完整。重新安装功能全部选上

    相关文章

      网友评论

          本文标题:gradle篇

          本文链接:https://www.haomeiwen.com/subject/fqsnoktx.html