`
somefuture
  • 浏览: 1091136 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

翻译:Gradle之依赖管理

 
阅读更多

 

原文地址 http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html

 

8.1. What is dependency management?何谓?为何?

依赖管理大致有两块:首先Gradle需要找到你工程需要的东西,这些东西就是所谓的“依赖”。另外Gradle需要构建和上传你工程的产出,这就是所谓的发行。让我们来仔细看看它们:

大部分工程都不太可能完全自给自足,一把你都会用到其他工程的文件。比如我工程需要Hibernate就得把它的类库加进来,比如测试的时候可能需要某些额外jar包(jdbc驱动或者Ehcache jar包)。这些文件就是工程的依赖。Gradle需要你告诉它工程的依赖是什么,它们在哪,然后帮你加入构建中。依赖可能需要去远程库下载,比如Maven 或者 Ivy 库。也可以是本地库,甚至可能是另一个工程。我们称这个过程叫“依赖解决”(dependency resolution).

通常情况下,依赖本身也有依赖。比如Hibernate核心库就依赖一些其他类库。当Gradle测试你工程的时候,它也需要找到这些间接依赖。我们称之为“传递依赖”( transitive dependencies).

大部分工程构建的主要目的是脱离工程使用。比如生成jar包,包括源代码、文档等,然后发布出去。这些个玩意构成了项目的发行内容。Gradle也会替你分忧这个工作。你声明了要发行,Gradle会构建并且发行。你可能会把文件拷贝到本地某处,或者上传到远程 Maven 或 Ivy 库,甚至在其他项目里使用。整个这个都是所谓的发行。

8.2. Declaring your dependencies依赖声明

我们看一下简单的依赖声明脚本:

Example 8.1. Declaring dependencies

build.gradle

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

这是在搞毛?这段脚本说的是:1,工程在编译时需要Hibernate core 3.6.7.Final。这样Hibernate核心库和它的依赖库都会引入。2,测试的时候需要4.0以上版本的junit。另外就是这些包都要从 Maven central 库里查找。接下来咱们详细看下。

8.3. Dependency configurations依赖配置

Gradle的依赖会分组为“配置”(configurations) 。一个配置就是一套具名依赖,称为“依赖配置”。你可以声明外部依赖,后面我们会看到。

Java插件定义了一些标准配置,形成了插件本身的类路径库。下面列一下,你可以自己去这看:Table 23.5, “Java plugin - dependency configurations”.

compile

该依赖对于编译发行是必须的。

runtime

该依赖对于运行时是必须的,默认包含编译时依赖。

testCompile

该依赖对于编译测试是必须的,默认包含编译产品依赖和编译时依赖。

testRuntime

该依赖对于测试是必须的,默认包含编译、运行时、测试编译依赖。

定制化配置请看: Section 50.3, “Dependency configurations”

8.4. External dependencies外部依赖

依赖类型有多种,现在说一种外部依赖(external dependency)。这种依赖的对象不在工程内,甚至是在远程库里。

定义外部依赖需要如下加入到依赖配置:

Example 8.2. Definition of an external dependency

build.gradle

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}

外部依赖使用groupname 和version 属性。根据使用库的不同,group 和version可能是可选的。有一种快捷方式声明依赖:

Example 8.3. Shortcut definition of an external dependency

build.gradle

dependencies {
    compile 'org.hibernate:hibernate-core:3.6.7.Final'
}

更多信息请看 Section 50.4, “How to declare your dependencies”.

8.5. Repositories库

Gradle是咋定位外部依赖呢?答案是“库”(repository)。一个库其实就是一大堆文件,不过是用groupname 和version组织好的。Gradle支持很多库,比如 Maven 和Ivy;还只存多种方式连接到库,比如本地系统或者 HTTP.

Gradle默认没定义库。你使用前需要至少定义一个,比如Maven central 库:

Example 8.4. Usage of Maven central repository

build.gradle

repositories {
    mavenCentral()
}

或者远程Maven 库:

Example 8.5. Usage of a remote Maven repository

build.gradle

repositories {
    maven {
        url "http://repo.mycompany.com/maven2"
    }
}

或者远程 Ivy 库:

Example 8.6. Usage of a remote Ivy directory

build.gradle

repositories {
    ivy {
        url "http://repo.mycompany.com/repo"
    }
}

你可以自己建个库然后指定:

Example 8.7. Usage of a local Ivy directory

build.gradle

repositories {
    ivy {
        // URL can refer to a local directory
        url "../local-repo"
    }
}

工程里可以制定多个库,Gradle会依序查找,一旦找到就停止。更多信息请看 Section 50.6, “Repositories”.

 

8.6. Publishing artifacts发布文件

依赖配置也用来发布文件,这些文件称为“发布文件”(publication artifacts),或干脆就叫“发件”(artifacts)(不会翻译,谁来纠正一下。。)

一般的,插件会做很多发件定义工作,所以我们不用干什么。不过需要告诉Gradle发件要发布到哪里。方法是把库附在 uploadArchives 任务里。比如我们要发布到远程Ivy库:

Example 8.8. Publishing to an Ivy repository

build.gradle

uploadArchives {
    repositories {
        ivy {
            credentials {
                username "username"
                password "pw"
            }
            url "http://repo.mycompany.com"
        }
    }
}

现在你执行 gradle uploadArchives, Gradle就会构建并上次你的Jar包,同时生成并上传一个ivy.xml 文件.

可以发布到Maven 库,语法有一点点不同。记住要使用Maven插件不然发布不过去。这样Gradle会生成并上传pom.xml文件。

Example 8.9. Publishing to a Maven repository

build.gradle

apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://localhost/tmp/myRepo/")
        }
    }
}

更多关于发布的信息请看 Chapter 51, Publishing artifacts.

 

分享到:
评论
1 楼 fhlm 2015-09-28  
你们创业做的是什么

相关推荐

    Gradle-Plugin-User-Guide-Chinese-Verision, Gradle Plugin User Guide 中文翻译.zip

    5. **依赖管理**:Gradle提供了一套强大的依赖管理系统,允许你在项目中声明和解决依赖。插件可以添加默认的依赖或者修改依赖配置。 6. **插件扩展**:Gradle允许你通过扩展对象自定义插件的行为。这些扩展可以添加...

    gradle-4.5-all

    7. **多项目构建支持**:Gradle在处理多项目构建时的能力可能也有所增强,使得大型项目管理和依赖关系的管理更为简便。 8. **持续集成和部署**:Gradle 4.5可能强化了与各种持续集成工具(如Jenkins、Travis CI等)...

    Android gradle文件

    1. **依赖管理**:Gradle能自动下载项目所需的库,并处理依赖关系。开发者只需在build.gradle中声明依赖,Gradle会自动解决冲突和下载库。 2. **构建变体**:在Android项目中,Gradle支持创建多种构建变体,如debug...

    gradle-userguide中英文官方文档

    1. **Gradle基础**:介绍Gradle的基本概念,包括构建脚本、任务、依赖管理和工件发布。 2. **Gradle DSL(领域特定语言)**:Gradle使用Groovy和Kotlin两种DSL编写构建脚本,详细讲解了如何编写和组织这些脚本。 3...

    xmljava系统源码-gradle_user_guide:Gradle用户指南

    支持maven/lvy的依赖管理 非常灵活,并不强迫用户一定要使用最佳的构建方式 插件可以暴露自身的语言和接口api给构建文件使用 支持IDE集成 2.2 需求(Requirements) Gradle 2.2(Gradle版本是2.2及以上,因为文档中...

    Gradle 用户指南 .pdf

    Gradle 提供了: 一个像 Ant 一样的非常灵活的通用构建工具 一种可切换的, 像 maven 一样的基于合约构建的框架 支持强大的多工程构建 支持强大的依赖管理(基于 ApacheIvy ) 支持已有的 maven 和 ivy 仓库 支持传递性...

    GradlePluginUserGuide 谷歌官方中文翻译文档,完整8章内容

    #### 八、依赖管理 - **依赖二进制包**:解释了如何添加对第三方库的依赖。 - **本地包**:介绍了如何添加对项目内部其他模块或库的依赖。 - **远程文件**:讨论了如何从远程仓库下载依赖。 - **多项目设置**:详细...

    lokalise-plugin:插件android gradle,用于使用lokalise.co更新本地化文件

    7. **集成过程**:在Android项目中使用lokalise-plugin,开发者需要在`build.gradle`文件中添加插件依赖,配置API密钥和项目ID,然后定义必要的任务以执行同步操作。 8. **版本控制**:lokalise.co平台支持版本控制...

    gradle-androlate-plugin:使用Google翻译翻译您的Android字符串资源

    `gradle-androlate-plugin`是一个强大的Gradle插件,它简化了Android应用中字符串资源的自动化翻译过程,利用Google翻译API来实现。本文将深入探讨如何使用这个插件以及其背后的原理。 首先,让我们了解`gradle-...

    android-gradle-localization-plugin:用于生成本地化字符串资源的Gradle插件

    首先,你需要在项目的`build.gradle`文件中添加插件依赖。这通常在`plugins`块或者`buildscript`块中完成,然后在`dependencies`块中引入插件。接下来,定义插件的配置,比如输入文件路径、输出目录以及语言映射等。...

    Spring Framework Reference Documentation 4.25

    - **Gradle依赖管理**:使用Gradle进行项目构建时的依赖管理。 - **Ivy依赖管理**:使用Ivy进行项目构建时的依赖管理。 - **发行版压缩文件**:提供Spring框架的完整发行版压缩包下载。 - **日志记录**: - **...

    百度OCR的eclipse移植版(带build.gradle文件)

    Gradle是Android开发中常用的自动化构建工具,它可以管理项目的依赖,并且支持灵活的构建流程。由于Eclipse本身并不原生支持Gradle,因此需要通过插件或者其他方式来处理`build.gradle`文件。 标签“eclipse”表明...

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库).7z

    2. **引入依赖**:将库导入项目中,如果是Maven项目,可以在pom.xml中添加依赖;如果是Gradle,应在build.gradle中配置。 3. **初始化客户端**:在代码中实例化Google Translate API的客户端,传入API密钥。 4. **...

    springboot参考指南个人中文翻译加理解

    - 启动器依赖管理:提供一组“启动器”POMs来简化依赖管理。 - 独立的应用程序:Spring Boot应用通常是可执行的JAR或WAR归档文件。 - 嵌入式Servlet容器:默认使用嵌入式的Tomcat、Jetty或Undertow作为应用服务器...

    JAVA在线考试管理系统(源代码+LW+开题报告+外文翻译+英文文献+答辩PPT).zip

    - **Spring Boot**:作为核心框架,提供依赖管理和自动配置,简化项目初始化和运行。 - **MyBatis**:作为持久层框架,负责数据库操作,通过SQL映射文件与Java代码解耦。 - **MySQL**:常用的关系型数据库,存储...

    安卓百度翻译使用

    - **添加依赖**: 将jar文件添加到你的安卓项目的libs目录下,并在项目的build.gradle文件中配置依赖。如果你使用的是Android Studio,需要在app模块的build.gradle文件中添加如下代码: ``` dependencies { ...

    JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT).rar

    11. **开发工具**:开发过程中可能使用Eclipse或IntelliJ IDEA作为集成开发环境,Git进行版本控制,Maven或Gradle管理依赖,JUnit进行单元测试。 12. **部署与运行**:完成开发后,系统需部署到服务器,如Tomcat或...

    JSP+SQL智能道路交通信息管理系统的设计与实现(论文+系统+开题报告+答辩PPT+外文翻译).rar

    开发过程中可能还会使用版本控制工具如Git,以及Maven或Gradle进行项目构建和依赖管理。 6. 开题报告与答辩准备:开题报告通常会阐述研究背景、意义、目标、技术路线及预期成果,是项目启动的关键文档。答辩PPT则需...

    hibernate-最少依赖jar包

    【标题】"Hibernate是最小依赖jar包"指出的是在使用Hibernate框架时,为了实现其基本功能,所需的最小Java归档(JAR)...为了简化项目构建和管理,现代开发中通常会利用Maven或Gradle等构建工具自动处理这些依赖关系。

Global site tag (gtag.js) - Google Analytics