使用 Gradle 的“仅工件表示法”和自定义工件名称
Posted
技术标签:
【中文标题】使用 Gradle 的“仅工件表示法”和自定义工件名称【英文标题】:Using Gradle's "Artifact only notation" with a custom artifact name 【发布时间】:2014-09-14 12:04:03 【问题描述】:我想使用Artifact only notation 下载文件名与模块名完全不同的单个工件。我的 Ivy 神器模式配置为:
ivy
artifactPattern 'http://host/[organization]/[module]/[revision]/[artifact]-[revision].[ext]'
然而,“Artifact only notation”似乎只支持:
group
(映射到[organization]
),
name
(映射到[module]
),
version
(映射到[revision]
),
ext
(映射到[exp]
)和
classifier
(映射到[classifier]
,此处未使用)。
网址的[artifact]
部分似乎总是被name
替换。
有没有办法在 Gradle 中明确设置 URL 中的 [artifact]
被替换为什么?在普通的 Ivy XML 中,我可以通过在 dependency
标记内指定带有 name
属性集的 artifact tag 来实现这一点。
我的问题与this question 有点相关,除了我没有服务器端ivy.xml
文件,我不能使用这个技巧来滥用classifier
,因为我的工件名称不仅仅是后缀不同模块名称。
【问题讨论】:
【参考方案1】:事实证明,指定对名称与其模块名称不同的工件的依赖关系的正确语法是 this example 的一部分。为了将上述 URL 中的 [artifact]
替换为 [module]
以外的其他内容,请按如下方式声明依赖项:
compile ('group-or-org-name:module-name:module-version')
artifact
name = 'artifact-name-different-from-module-name'
type = 'type-must-not-be-null'
编辑:以下是该功能的官方文档,作为 Advanced dependency configuration 部分的一部分。
【讨论】:
以上是关于使用 Gradle 的“仅工件表示法”和自定义工件名称的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ③ ( 配置上传工件 | 将 Gradle 插件 jar 包源码文档上传到本地Maven 仓库 )