自定义PublishToIvyRepository任务中存储库的语法是什么?

时间:2018-01-17 21:47:25

标签: gradle ivy

我正在尝试创建自定义任务,以便我可以发布到通常不属于publishing {}中项目级build.gradle块的特定存储库。我最初的想法是创建一个PublishToIvyRepository类型的任务,它有一个自定义存储库的字段。我的代码如下所示:

task publishToSpecialIvyRepo(type: PublishToIvyRepository) {
    repository = ivy {
        url "http://example.com/mySpecialIvyRepo"
        layout 'pattern' , {
            artifact '[organization]/[module]/[revision]/[artifact](-[revision])(-[classifier]).[ext]'
            ivy '[organization]/[module]/[revision]/[artifact].[ext]'
        }
    }
    publication = project.publishing.publications[0]
}

然而,这似乎不起作用,因为我收到一条错误消息,涉及不识别ivy {}语法。

  

无法在任务'上找到参数[build_6twdleybkcdvojdar8mcpb96g $ _run_closure7 $ _closure23 @ 60c8966b]的方法ivy():MyProject:publishToSpecialIvyRepo'的类型org.gradle.api.publish.ivy.tasks.PublishToIvyR   epository。

不幸的是,documentation about publishing to Ivy repositories并没有描述编写自己的PublishToIvyRepository任务,因此我不确定自己做错了什么。

这是尝试发布到特定回购的正确方法吗?如果是这样,那么我做错了什么?有没有更好的方法来实现我的目标?

1 个答案:

答案 0 :(得分:1)

ivy方法是RepositoryHandler的一部分,因此在ProjectPublishToIvyRepository任务范围内无法使用。

您可以尝试通过默认的RepositoryHandler

创建存储库
repository = repositories.ivy {
    // configure the repository
}

请注意,此方法会将存储库添加到用于进行工件解析的存储库列表中。