Gradle 1.12用户指南翻译——第五十一章. 发布构件
本文由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 提供了upload和ConfigurationNamebuild任务。[18]这些任务的执行将会构建或上传属于各自配置的构件。ConfigurationName
表表 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 仓库的交互“。
Gradle 1.12用户指南翻译——第五十一章. 发布构件的更多相关文章
- Gradle 1.12用户指南翻译——第五十三章. 签名插件
其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...
- Gradle 1.12用户指南翻译——第三十一章. FindBugs 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第五十章. 依赖管理
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- Gradle 1.12用户指南翻译——第二十二章. 标准的 Gradle 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第五十二章. Maven 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- Gradle 1.12用户指南翻译——第四十七章. Build Init 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12用户指南翻译——第二十九章. Checkstyle 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第二十六章. War 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第二十四章. Groovy 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
随机推荐
- 老刘 Yii2 源码学习笔记之 Component 类
类图关系 属性与方法 class Component extends BaseObject { private $_events = []; private $_eventWildcards = [] ...
- C#之winform实现文件拖拽功能
将一个文件拖拽到窗体的某个控件时,将该控件的路径显示在该控件上,只要拿到了路径自然可以读取文件中的内容了 将一个控件的属性AllowDrop设置为true,然后添加DragDrop.DragEnter ...
- [LeetCode] K-diff Pairs in an Array 数组中差为K的数对
Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in t ...
- 机器学习基石:06 Theory of Generalization
若H的断点为k,即k个数据点不能被H给shatter,那么k+1个数据点也不能被H给shatter,即k+1也是H的断点. 如果给定的样本数N是大于等于k的,易得mH(N)<2N,且随着N的增大 ...
- Java IO(三)
在Java IO提供的类中,除了前面介绍的RandomAccessFile类之外,还有一系列的io操作类. 主要分为两大类.字符流和字节流.关系图如下: 在Java IO的操作中,很好的体现了Java ...
- Java集合详解一
在学习集合之前,我们需要思考的是为什么要有集合?集合有什么用? 我们知道,在java中有数组的概念,数组可以用来存放一组数据.但是,数组是固定长度的,这样在使用的时候就会有很多的不方便,比如说资源的浪 ...
- LruCache的缓存策略
一.Android中的缓存策略 一般来说,缓存策略主要包含缓存的添加.获取和删除这三类操作.如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大 ...
- [测试题]神在夏至祭降下了神谕(oracle)
Description 我们村子在过去的 400 年中, 断绝与下界的接触, 过着自给自足的生活.夏至祭是一场迎接祖灵于夏季归来, 同时祈求丰收的庆典.村里的男人会在广场上演出夏之军和冬之军的战争. ...
- [HNOI 2001]求正整数
Description 对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m.例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6:而且是最小的有4个因子的整数. Input n ...
- [ZJOI2013]丽洁体
题目描述 平时的练习和考试中,我们经常会碰上这样的题:命题人给出一个例句,要我们类比着写句子.这种往往被称为仿写的题,不单单出现在小学生的考试中,也有时会出现在中考中.许多同学都喜欢做这种题,因为较其 ...