本文由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. C#之IComparable用法,实现List<T>.sort()排序

    这篇文章主要介绍了C#的一些基础知识,主要是IComparable用法,实现List<T>.sort()排序,非常的实用,这里推荐给大家.   List<T>.sort()可以 ...

  2. [LeetCode] Valid Palindrome II 验证回文字符串之二

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

  3. [LeetCode] Range Addition II 范围相加之二

    Given an m * n matrix M initialized with all 0's and several update operations. Operations are repre ...

  4. [Codeforces 919E]Congruence Equation

    Description 题库链接 求满足 \[n\cdot a^n\equiv b \pmod{p}\] 的 \(n\) 的个数, \(1\leq n\leq x\) , \(a,b,p,x\) 均已 ...

  5. hihoCoder 1595 : Numbers

    Description You are given n constant integers c[1], c[2], ..., c[n] and an integer k. You are to ass ...

  6. [SCOI2012]滑雪与时间胶囊

    题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着MMM条供滑行的轨道和NNN个轨道之间的交点(同时也是景点),而且每个景点都有一编号iii(1≤i≤N1 \le i \le N1≤i≤ ...

  7. HDU2108和HDU2036(叉乘)

    hdu2108 判断是否为凸边形 判断连续三点的叉乘 若为凸,内角<180:若为凹,内角>180 所以通过正负来判断 #include <iostream> #include ...

  8. FZU 2158

    在密室逃脱游戏中,大家被困在一个密室中,为了逃出密室,需要找到正确的数字密码,于是大家分头行动,分别找到了密码的子序列,而后大家将得到的线索集中整理分析,大家想知道密码最少是多少位.  Input 第 ...

  9. hdu5651 xiaoxin juju needs help(逆元)

    xiaoxin juju needs help  Accepts: 150  Submissions: 966  Time Limit: 2000/1000 MS (Java/Others)  Mem ...

  10. SpringCache学习之操作redis

    一.redis快速入门 1.redis简介 在java领域,常见的四大缓存分别是ehcache,memcached,redis,guava-cache,其中redis与其他类型缓存相比,有着得天独厚的 ...