粗略的讲, 依赖管理由两部分组成. 首先, Gradle 需要了解你的项目需要构建或运行的东西, 以便找到它们. 我们称这些传入的文件为项目的 dependencies(依赖项). 其次, Gradle 需要构建并上传你的项目产生的东西. 我们称这些传出的项目文件为 publications(发布项). 让我们来看看这两条的详细信息:大多数项目都不是完全独立的. 它们需要其它项目进行编译或测试等等.
什么是依赖管理声明你的依赖依赖配置外部的依赖仓库发布 artifacts
你可以在同一个构建里加入项目之间的依赖, 举个例子, 一个项目的 JAR 文件被用来编译另外一个项目. 在 api 构建文件里我们将加入一个由 shared 项目产生的 JAR 文件的依赖. 由于这个依赖, Gradle 将确保 shared 项目总是在 api 之前被构建.Example 7.13. 多项目构建 - 项目之间的依赖api/build.gradledependencies { compile project(':shared')}
通常,一个 Java 项目有许多外部的依赖,既是指外部的 JAR 文件.为了在项目里引用这些 JAR 文件,你需要告诉 Gradle 去哪里找它们.在 Gradle 中,JAR 文件位于一个仓库中,这里的仓库类似于 MAVEN 的仓库.仓库可以被用来提取依赖,或者放入一个依赖,或者两者皆可.举个例子,我们将使用开放的 Maven 仓库:例子 7.3. 加入 Maven 仓库build.
就像你所猜想的那样,你可以声明任务之间的依赖关系.例子 6.6. 申明任务之间的依赖关系build.gradletask hello << { println 'Hello world!'}task intro(dependsOn: hello) << { println "I'm Gradle"}gradle -q intro 命令的输出> gradle -q introHello world!
Custom scopeScope提供了作用域范围内的单例特性,对象的引用在scope内会一直存在,例如:ApplicationScope,ActivityScope。Scope其实就是一个Component的对象,Scope的注解就是在Component上的。
依赖注入是反转控制的一种。什么是反转控制?我们平常写程序,需要什么对象,就在代码里显式地new一个出来然后使用,这是我们自己去控制对象的生成。而反转控制是让Spring(或者类似的其他工具)帮忙去生成我们需要的对象,也就是说对象的生成的控制权交给Spring了。
反转控制 Inversion of Control (IoC) 或者叫依赖注入 Dependency Injectionis a general concept, and it can be expressed in many different ways and Dependency Injection is merely one concrete example of Inversion of Control.
关注时代Java