• Groovy


    Q&A

    Gradle 中的 ext 究竟是什么?

    gradle 中我们使用 ext 定义额外的各种属性,可是 ext 究竟是什么呢?

    参看 ExtraPropertiesExtension - Gradle DSL,发现 ext 不是 Groovy 固有的定义,而是领域特定的语言(DSL)。使用方式是:

    // 以下的 project 常常被省略
    project.ext { foo = "bar" }
    
    assert project.ext.get("foo") == "bar"
    assert project.ext.foo == "bar"
    assert project.ext["foo"] == "bar"
    
    assert project.foo == "bar"
    assert project["foo"] == "bar"
    

    ext 实质上是一个内置的简单对象,但可以动态添加新属性,这个对象叫 ExtraPropertiesExtension,它内置在所有 ExtensionAware 中,ExtenstionAware 的已知子类有 ProjectSettingsTaskSourceSet,所以在这些类中可以直接使用所谓的 namespace method 动态新增新属性。

    // Extensions are just plain objects, there is no interface/type
    class MyExtension {
      String foo
    
      MyExtension(String foo) {
        this.foo = foo
      }
    }
    
    // Add new extensions via the extension container
    project.extensions.create('custom', MyExtension, "bar")
    //                       («name»,   «type»,       «constructor args», …)
    
    // extensions appear as properties on the target object by the given name
    assert project.custom instanceof MyExtension
    assert project.custom.foo == "bar"
    
    // also via a namespace method
    project.custom {
      assert foo == "bar"
      foo = "other"
    }
    assert project.custom.foo == "other"
    

    Gradle 依赖排除

    dependencies {
    	compile('com.zhyea:ar4j:1.0') {
    		//excluding a particular transitive dependency:
    		exclude module: 'cglib' //by artifact name
    		exclude group: 'org.jmock' //by group
    		exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group
    	}
    }
    

    参考

    1. Gradle 依赖排除
  • 相关阅读:
    页面转表格并且下载
    关于表格导入
    C/C++作用域运算符::
    设计模式之观察者模式_C++
    C# 传不定参数
    C语言中的位域的使用
    C++/python求哈希值(SHA256)
    C++中纯虚函数
    类模板/函数模板实现父类指针指向子类对象(虚函数实现多态)
    Windows Socket 接口简介
  • 原文地址:https://www.cnblogs.com/lshare/p/11334740.html
Copyright © 2020-2023  润新知