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 发布(新)中读到有关新发布插件的内容。请尝试它们,并向我们反馈。
本章介绍如何声明你的项目的输出构件,以及如何使用它们(例如上传它们)。我们把项目的构件定义为项目向外界提供的文件。它可能是一个库,一个 ZIP 文件,或者是任何其他文件。一个项目可以发布为它想要的所有构件。
像依赖一样,构件也按配置进行分组。事实上,配置可以同时包含构件和依赖。
对于你的项目中的每一个配置,Gradle 提供了upload
和ConfigurationName
build
任务。[18]这些任务的执行将会构建或上传属于各自配置的构件。ConfigurationName
表表 23.5,“Java 插件 - 依赖配置”显示了 Java 插件添加的配置。这两个配置都与构件的使用有关。archives
配置是一个指定你的构件的标准配置。Java 插件会自动地把默认的 jar 文件指定到这个配置中。我们将在 51.5 节,“详谈项目库”中更多地对runtime
配置进行讨论。作为依赖,你可以如你喜欢尽可能多地定义自定义配置,并把构件指向它们。
你可以使用一个archive任务来定义构件:
重点注意:你所创建的作为构建中的一部分的自定义archives,不会自动地指向任何的配置。你必须进行显示的指定。
你也可以使用一个文件来定义构件:
示例 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可能包含其他的构件属性:
我们说过,每一个配置都有一个特定的上传任务。但是在你可以上传之前,你必须配置上传任务,并定义发布这些构件的位置。你所定义的仓库(第 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仓库的交互”中描述。
如果你的项目是作为一个库使用,你需要定义这个库的构件是什么,以及这些构件的依赖。Java 插件已经为此添加了一个runtime
配置,它隐式的假设runtime
依赖项是你想要发布的构件的依赖。当然,这是可完全自定义的。你可以添加你自己的自定义配置,或者让现有配置继承自扩展配置。你可以有不同组的构件,它们有不同的依赖。这一机制非常强大和灵活。
如果其他人想要把你的项目作为一个库使用,她只需要在依赖配置上声明,使她的项目依赖你的库。一个Gradle依赖提供了configuration
属性来声明它。如果它没有指定,则会使用default
配置(参阅第 50.4.9节,“依赖配置”)。把一个项目作为类库使用,可能是因为多项目构建,也可能是从仓库中获取项目。在后者的情况下,这个仓库的 ivy.xml
描述符应该包含所有必要的信息。如果你使用 Maven 仓库,由没有如上文所述的灵活性。有关如何发布到 Maven 仓库,请参阅第 52.6节,”与Maven 仓库的交互“。