Gradle学习历程(一)

本文介绍Gradle构建工具的基础及其使用的Groovy语言特点。涵盖Groovy的安装配置、基本语法、数据类型、方法定义等内容,并展示了如何利用Groovy编写简单的程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gradle学习历程(一)— Groovy语言入门

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。因此在学习Gradle之前我们有必要学习一下Groovy这门语言。

Groovy介绍

Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库
这里写图片描述

Groovy入门

既然Groovy是一门编程语言,那么必定有它的规则,那么我们首先得学习它们的语法,首先我们写第一行Groovy代码。

安装IDE

  1. 安装Eclipse
  2. 安装Groovy插件,如下图
    这里写图片描述
    输入插件地址:http://dist.springsource.org/snapshot/GRECLIPSE/e4.5/
    请根据你们自己Eclipse的版本安装对应的版本,获取不同版本的地址可以浏览[https://github.com/groovy/groovy-eclipse/wiki]
    这里写图片描述

编写第一行代码

  1. 新建一个Java项目
  2. 新建一个Groovy类
    这里写图片描述
    3.编写第一行代码
public class GroovyTest{
    /**
     * @param args
     */
    public static void main(def args){
        println("Hello Groovy");
    }
}
  1. 运行
    这里写图片描述
    输入出:Hello Groovy

Groovy语法

  1. Groovy注释标记和Java一样,支持//或者/**/
  2. Groovy数据类型
    Groovy中支持动态类型,即定义变量的时候可以不指定其类型。Groovy中,变量定义可以使用关键字def。注意,虽然def不是必须的,但是为了代码清晰,建议还是使用def关键字。
  def variable1 = 1   //可以不使用分号结尾  
  def varable2 = "Groovy"  
  def  int varable3  = 1  //变量定义时,也可以直接指定类型  

3.Groovy方法定义

//无类型的函数定义,必须使用def关键字  
def  func(){  
    last_line   //最后一行代码的执行结果就是本函数的返回值  
}  
//如果指定了函数返回类型,则可不必加def关键字来定义函数  
String getString(){  
   return "I am a string"  
}  

4.Groovy字符串

    def static testString() {
        def str = "Groovy"
        println("My name is $str") //单引号''中的内容严格对应Java中的String,不对$符号进行转义
        println('My name is $str') //双引号""的内容则和脚本语言的处理有点像,如果字符中有$号的话,则它会$表达式先求值。
        println('''My name 
    is
    $str
            ''') //三个引号'''xxx'''中的字符串支持随意换行 (不过字符串中的格式符都会被保留,包括回车和tab)

        def result = "My name is " + str //跟java一样,如果你需要把一个字符串写在多行里,可以使用+号连接字符串
        println(result)
    }

输出

My name is Groovy
My name is $str
My name 
    is
    $str

My name is Groovy

5.容器
Groovy中的容器类很简单,就三种:
1. List:链表,其底层对应Java中的List接口,一般用ArrayList作为真正的实现类。

    def static testList() {
        def mList = ["abc","123","grooby"] //List由[]定义,其元素可以是任何对象  
        mList.add(1) //添加一个元素
        mList<< "come on"  //添加一个元素
        mList.each{str->
          println str
        } //迭代
    }

输出:

abc
123
grooby
1
come on
2. Map:键-值表,其底层对应Java中的LinkedHashMap。
    def static testMap() {
           def map=['name':'john','age':14,'sex':'boy']
           map=map+['weight':25]       //添加john的体重
           map.put('length',1.27)      //添加john的身高
           map.father='Keller'         //添加john的父亲

           println map['father']       //通过key作为下标索引
           println map.length          //通过key作为成员名索引
           map.each {
               key,value ->
               println("key = $key value = $value");
           } //迭代
    }

闭包(Closure)

闭包是用{符号括起来的代码块,它可以被单独运行或调用,也可以被命名。类似‘匿名类’或内联函数的概念。

定义闭包的格式

def <name> = {[param1,param2,...  ->]//这个箭头很关键。箭头前面是参数定义,箭头后面是代码  
    //执行的代码
    ...
}

示例

定义一个闭包

     public static void main(def args){

            //定义闭包
            def myClosure = {
                    String str ->
                    println(str)
            }
            //调用闭包
            myClosure("Hello Groovy")
            myClosure.call("Hello Groovy")

            //闭包也可以作为方法参数
            testClosure ({
                println("Hello Groovy")
            })

            //当闭包作为方法的最后一个参数也可以省略括号
            testClosure {
                println("Hello Groovy")

            }

       }

     def static testClosure(Closure closuse) {
         closuse()
     }

Groovy类和java类一样,你完全可以用标准java bean的语法定义一个groovy 类。但作为另一种语言,我们可以使用更groovy的方式定义和使用类,这样的好处是,你可以少写一半以上的javabean代码。
1. 不需要public修饰符
如前面所言,groovy的默认访问修饰符就是public,如果你的groovy类成员需要public修饰,则你根本不用写它。
2. 不需要类型说明
同样前面也说过,groovy也不关心变量和方法参数的具体类型。
3. 不需要getter/setter方法
不要奇怪,在很多ide(如eclipse)早就可以为序员自动产生getter/setter方法了。在groovy中,则彻底不需要getter/setter方法——所有类成员(如果是默认的public)根本不用通过getter/setter方法引用它们(当然,如果你一定要通过get/set方法访问成员属性,groovy也提供了它们)。
4. 不需要构造函数
不在需要程序员声明任何构造函数,因为groovy自动提供了足够你使用的构造函数。不用担心构造函数不够多,因为实际上只需要两个构造函数(1个不带参数的默认构造函数,1个只带一个map参数的构造函数—由于是map类型,通过这个参数你可以在构造对象时任意初始化它的成员变量)。
5. 不需要return
Groovy中,方法不需要return来返回值吗?这个似乎很难理解。看后面的代码吧。
因此,groovy风格的类是这样的:
6. 不需要()号
Groovy中方法调用可以省略()号(构造函数除外),也就是说下面两句是等同的:

person1.setName 'kk'
person1.setName('kk')

示例

创建一个Groovy类

class Person{
    def name
    def age
     String toString() {
        "name = $name age = $age"
    }
}

调用一个Groovy类

    def person = new Person()
    person.age = 16
    person.name = "groovy"
    println person

Groovy API

前面已经介绍了Groovy一些基本的语法,要想更加全面的了解Groovy,我们需要去查看它的API。
Groovy的API文档位于 http://www.groovy-lang.org/api.html

内容概要:本文档详细介绍了基于MATLAB实现多目标差分进化(MODE)算法进行无人机三维路径规划的项目实例。项目旨在提升无人机在复杂三维环境中路径规划的精度、实时性、多目标协调处理能力、障碍物避让能力和路径平滑性。通过引入多目标差分进化算法,项目解决了传统路径规划算法在动态环境和多目标优化中的不足,实现了路径长度、飞行安全距离、能耗等多个目标的协调优化。文档涵盖了环境建模、路径编码、多目标优化策略、障碍物检测与避让、路径平滑处理等关键技术模块,并提供了部分MATLAB代码示例。 适合人群:具备定编程基础,对无人机路径规划和多目标优化算法感兴趣的科研人员、工程师和研究生。 使用场景及目标:①适用于无人机在军事侦察、环境监测、灾害救援、物流运输、城市管理等领域的三维路径规划;②通过多目标差分进化算法,优化路径长度、飞行安全距离、能耗等多目标,提升无人机任务执行效率和安全性;③解决动态环境变化、实时路径调整和复杂障碍物避让等问题。 其他说明:项目采用模块化设计,便于集成不同的优化目标和动态环境因素,支持后续算法升级与功能扩展。通过系统实现和仿真实验验证,项目不仅提升了理论研究的实用价值,还为无人机智能自主飞行提供了技术基础。文档提供了详细的代码示例,有助于读者深入理解和实践该项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值