本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:
http://blog.csdn.net/column/details/gradle-translation.html
翻译项目请关注Github上的地址:
https://github.com/msdx/gradledoc
本文翻译所在分支:
https://github.com/msdx/gradledoc/tree/1.12。
直接浏览双语版的文档请访问:
http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。
另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前0.2.1版本兼容 Android 2.2以上系统,项目地址如下:
https://github.com/msdx/gradle-doc-apk
翻译不易,转载请注明本文在CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/53646878

关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。如发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步修改。

第五十一章. 发布构件

本章介绍的是在Gradle 1.0版本中的原始的发布机制:在Gradle 1.3 中我们引入了新的发布机制。这种新机制现在还在孵化中而尚未完成,它引入了一些新的概念和特性,它们将使 Gradle 的发布功能更强大。

你可以在64 章,Ivy 发布(新)65 章, Maven 发布(新)中读到有关新发布插件的内容。请尝试它们,并向我们反馈。

51.1. 介绍

本章介绍如何声明你的项目的输出构件,以及如何使用它们(例如上传它们)。我们把项目的构件定义为项目向外界提供的文件。它可能是一个库,一个 ZIP 文件,或者是任何其他文件。一个项目可以发布为它想要的所有构件。

51.2. 构件和配置

像依赖一样,构件也按配置进行分组。事实上,配置可以同时包含构件和依赖。

对于你的项目中的每一个配置,Gradle 提供了uploadConfigurationNamebuildConfigurationName任务。[18]这些任务的执行将会构建或上传属于各自配置的构件。

表 23.5,“Java 插件 - 依赖配置”显示了 Java 插件添加的配置。这两个配置都与构件的使用有关。archives 配置是一个指定你的构件的标准配置。Java 插件会自动地把默认的 jar 文件指定到这个配置中。我们将在51.5 节,“详谈项目库”中更多地对runtime配置进行讨论。作为依赖,你可以如你喜欢尽可能多地定义自定义配置,并把构件指向它们。

51.3. 声明构件

51.3.1. Archive task artifacts

你可以使用一个archive任务来定义构件:

示例 51.1. 使用archive 任务定义一个构件

build.gradle

task myJar(type: Jar)

artifacts {
    archives myJar
}

重点注意:你所创建的作为构建中的一部分的自定义archives,不会自动地指向任何的配置。你必须进行显示的指定。

51.3.2. 文件构件

你也可以使用一个文件来定义构件:

示例 51.2. 使用文件定义构件

build.gradle

def someFile = file('build/somefile.txt')

artifacts {
    archives someFile
}

Gradle将基于文件的名字找出构件的属性。你可以自定义这些属性:

示例 51.3. 自定义构件

build.gradle

task myTask(type:  MyTaskType) {
    destFile = file('build/somefile.txt')
}

artifacts {
    archives(myTask.destFile) {
        name 'my-artifact'
        type 'text'
        builtBy myTask
    }
}

有一个基于map的语法来定义一个构件使用文件。这个 map 必须包含一个定义文件的 file 条目。这个map可能包含其他的构件属性:

示例 51.4. 基于map的语法定义一个文件构件。

build.gradle

task generate(type:  MyTaskType) {
    destFile = file('build/somefile.txt')
}

artifacts {
    archives file: generate.destFile, name: 'my-artifact', type: 'text', builtBy: generate
}

51.4 发布构件

我们说过,每一个配置都有一个特定的上传任务。但是在你可以上传之前,你必须配置上传任务,并定义发布这些构件的位置。你所定义的仓库(第 50.6 节,“仓库”所描述的)并不会自动地用于上传。实际上,有些仓库只允许下载构件。以下是一个有关配置上传任务的例子:

示例 51.5. 上传任务的配置

build.gradle

repositories {
    flatDir {
        name "fileRepo"
        dirs "repo"
    }
}

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

正如你所见,你可以使用一个现有的仓库的引用,或者创建一个新的仓库。如50.6.8节,“更多关于Ivy解析器的信息”中所述,你可以使用符合上传的所有Ivy解析器。

如果一个上传仓库中定义了多个模式,Gradle 必须为每个文件选择上传模式。默认情况下,Gradle 将上传到由url参数以及可选的layout参数所联合定义的模式。如果没有提供url参数,Gradle 将使用第一个定义的artifactPattern来上传,或者对于上传Ivy文件而言,将使用第一个定义的ivyPattern,如果这个参数有设置。

关于上传到Maven仓库的内容,在52.6节,“与Maven仓库的交互”中描述。

51.5. 更多关于项目库的内容

如果你的项目是作为一个库使用,你需要定义这个库的构件是什么,以及这些构件的依赖。Java 插件已经为此添加了一个runtime配置,它隐式的假设runtime依赖项是你想要发布的构件的依赖。当然,这是可完全自定义的。你可以添加你自己的自定义配置,或者让现有配置继承自扩展配置。你可以有不同组的构件,它们有不同的依赖。这一机制非常强大和灵活。

如果其他人想要把你的项目作为一个库使用,她只需要在依赖配置上声明,使她的项目依赖你的库。一个Gradle依赖提供了configuration 属性来声明它。如果它没有指定,则会使用default 配置(参阅第 50.4.9节,“依赖配置”)。把一个项目作为类库使用,可能是因为多项目构建,也可能是从仓库中获取项目。在后者的情况下,这个仓库的 ivy.xml描述符应该包含所有必要的信息。如果你使用 Maven 仓库,由没有如上文所述的灵活性。有关如何发布到 Maven 仓库,请参阅第 52.6节,”与Maven 仓库的交互“




[18] 确切地说,Base插件提供了这些任务。这个Base插件会在你使用 Java 插件时自动的添加进来。

Gradle 1.12用户指南翻译——第五十一章. 发布构件的更多相关文章

  1. Gradle 1.12用户指南翻译——第五十三章. 签名插件

    其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...

  2. Gradle 1.12用户指南翻译——第三十一章. FindBugs 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  3. Gradle 1.12用户指南翻译——第五十章. 依赖管理

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...

  4. Gradle 1.12用户指南翻译——第二十二章. 标准的 Gradle 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  5. Gradle 1.12用户指南翻译——第五十二章. Maven 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...

  6. Gradle 1.12用户指南翻译——第四十七章. Build Init 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  7. Gradle 1.12用户指南翻译——第二十九章. Checkstyle 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  8. Gradle 1.12用户指南翻译——第二十六章. War 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  9. Gradle 1.12用户指南翻译——第二十四章. Groovy 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

随机推荐

  1. 确保 PHP 应用程序的安全 -- 不能违反的四条安全规则

    规则 1:绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据. ...

  2. java之设计模式工厂三兄弟之工厂方法模式

    [学习难度:★★☆☆☆,使用频率:★★★★★] 简单工厂模式虽然简单,但存在一个很严重的问题.当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码 ...

  3. 一日一练-CSS CSS中percentage百分值的使用

    子曰:学好百分值,考试考百分 首先是确定CSS 中的percentage 都可以应用在CSS 中的哪些属性,以及这些属性的值如何进行计算的,参考CSS 参考手册进行统计. 定位(Positioning ...

  4. 以太坊如何估计计算gas?

    以太坊如何估计估算计算gas?Etherscan上transaction info中有个gas used by txn,结果跟remix给的结果以及geth中getTransactionReceipt ...

  5. 生成和配置https证书

    最近在做小程序,调用后台接口需要https协议请求,小程序之所以这么要求,也是因为http协议是明文传播文件数据的,出于数据安全考虑,必须使用https协议. http想实现为https 就需要为配置 ...

  6. HttpClient入门二

    通过上一节我们已经可以实现对一个网站源码的抓取. 但是,有一些网站,在爬取的时候会出现如下的错误: HTTP/1.1 503 Service Unavailable <!DOCTYPE html ...

  7. python re模块findall使用

    今天练习re模块时候出现了一个很奇怪的问题,同样的正则表达式用re.search()与用re.compile().findall()匹配出来的结果不一致. 很是奇怪,故此记录一下,防止以后碰到类似情况 ...

  8. [ZJOI2010]数字计数

    题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入输出格式 输入格式: 输入文件中仅包含一行两个整数a.b,含义如上所述. 输出格式: 输出文件 ...

  9. 【Luogu P2709 小B的询问】莫队

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  10. 2015 多校联赛 ——HDU5302(构造)

    Connect the Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...