Gradle 如何在自定义PublishToIvyRepository任务中重用IvyPublication?
我有一个Gradle 如何在自定义PublishToIvyRepository任务中重用IvyPublication?,gradle,ivy,Gradle,Ivy,我有一个build.gradle文件,其中包含我正在发布的工件,遵循 我有一个单独的任务,我想对其进行配置,使其进入另一个正常的存储库,但使用与上述代码相同的发布。我最初的尝试是: task publishToIvyLocal(type: PublishToIvyRepository) { repository = mySpecialRepository publication = project.publishing.publications[0] } 然而,这似乎不起作用。
build.gradle
文件,其中包含我正在发布的工件,遵循
我有一个单独的任务,我想对其进行配置,使其进入另一个正常的存储库,但使用与上述代码相同的发布。我最初的尝试是:
task publishToIvyLocal(type: PublishToIvyRepository) {
repository = mySpecialRepository
publication = project.publishing.publications[0]
}
然而,这似乎不起作用。如果我把它放在上面的publishing{}
块之前,我会得到以下错误:
访问“发布”扩展后无法配置该扩展
我猜project.publishing.publications[0]
不是重用此出版物的最佳方式
如何在自定义PublishToIvyRepository任务中重用IvyPublication?无需自行创建
PublishToIvyRepository
任务
应用'ivy-publish'
插件可执行以下操作:
- [……]
- 为添加的每个
(参见第35.2节“出版物”)和添加的每个IvyPublication
(参见第35.3节“存储库”)的组合建立一个规则,以自动创建一个IvyArtifactRepository
任务PublishToIvyRepository
publish«PUBNAME»PublicationTo«REPONAME»Repository
,在本例中为publishIvyJavaPublicationToIvyRepository
一些示例代码:
publishing {
publications {
mySpecial(IvyPublication) {
// configure publication
}
}
repositories {
ivy {
name = 'first'
// configure first repository
}
ivy {
name = 'second'
// configure second repository
}
}
}
这将创建以下任务:
publishMySpecialPublicationToFirstRepository
publishMySpecialPublicationToSecondRepository
无需自行创建
PublishToIvyRepository
任务
应用'ivy-publish'
插件可执行以下操作:
- [……]
- 为添加的每个
(参见第35.2节“出版物”)和添加的每个IvyPublication
(参见第35.3节“存储库”)的组合建立一个规则,以自动创建一个IvyArtifactRepository
任务PublishToIvyRepository
publish«PUBNAME»PublicationTo«REPONAME»Repository
,在本例中为publishIvyJavaPublicationToIvyRepository
一些示例代码:
publishing {
publications {
mySpecial(IvyPublication) {
// configure publication
}
}
repositories {
ivy {
name = 'first'
// configure first repository
}
ivy {
name = 'second'
// configure second repository
}
}
}
这将创建以下任务:
publishMySpecialPublicationToFirstRepository
publishMySpecialPublicationToSecondRepository
鉴于您的代码示例,我同意lu.koerfer的回答,但如果您确实需要自定义发布任务,则可以在配置后使用它访问
发布
容器:
project.afterEvaluate
{
customPublicationTask.publication = project.publishing.publications["ivy"]
// a publication can be accessed by its name
}
鉴于您的代码示例,我同意lu.koerfer的回答,但如果您确实需要自定义发布任务,则可以在配置后使用它访问
发布
容器:
project.afterEvaluate
{
customPublicationTask.publication = project.publishing.publications["ivy"]
// a publication can be accessed by its name
}
我甚至不知道这是可能的。我希望官方文档能更好地解释它。您是否需要做一些特殊的事情来生成
publishMySpecialPublicationToFirstRepository
任务?它没有显示在gradlew tasks
中,但在我使用Gradle时会显示。您是否在项目存储库处理程序(repositories{…}
)或发布存储库处理程序(publishing.repositories{…}
)中指定了存储库?啊,这就是问题所在。我把它放在存储库{…}
中。现在它显示正确了。我甚至不知道这是可能的。我希望官方文档能更好地解释它。您是否需要做一些特殊的事情来生成publishMySpecialPublicationToFirstRepository
任务?它没有显示在gradlew tasks
中,但在我使用Gradle时会显示。您是否在项目存储库处理程序(repositories{…}
)或发布存储库处理程序(publishing.repositories{…}
)中指定了存储库?啊,这就是问题所在。我把它放在存储库{…}
中。现在它正确地显示出来了。