Gradle 格拉德尔';s PublishToEventLocal任务未正确执行
我正在尝试创建一个基于gradle的多模块项目。还有一个项目包含不同的gradle脚本,可以支持可插入的构建配置。其中一个脚本用于将工件发布到maven存储库。以下是该脚本的内容:Gradle 格拉德尔';s PublishToEventLocal任务未正确执行,gradle,publish,artifacts,multi-project,Gradle,Publish,Artifacts,Multi Project,我正在尝试创建一个基于gradle的多模块项目。还有一个项目包含不同的gradle脚本,可以支持可插入的构建配置。其中一个脚本用于将工件发布到maven存储库。以下是该脚本的内容: apply plugin: 'maven-publish' configure(subprojects.findAll()) { if (it.name.endsWith('web')) { publishing { publications {
apply plugin: 'maven-publish'
configure(subprojects.findAll()) {
if (it.name.endsWith('web')) {
publishing {
publications {
mavenWeb(MavenPublication) {
from components.web
}
}
}
} else {
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
}
}
build.dependsOn publishToMavenLocal
此脚本包含在其他项目的构建梯度文件中
apply from: '../../food-orders-online-main/artifact-publish.gradle'
当我运行构建任务时,它总是显示PublishToEventLocal任务是最新的,并且我在本地存储库中找不到工件。我做错了什么吗?我认为这可能是gradle的一个缺陷的表现,模块可能会在以某种方式依赖它们时失去PublishMavenJavaPublicationToVenLocal任务 如果gradle确定模块没有PublishMavenJavaPublicationToEventLocal任务,则PublishToEventLocal任务将始终报告它是最新的 我发现的具体案例发生在多模块设置中,具有多个嵌套模块级别。它可以总结如下,其中shared:domain在被
root
root gradle build file
->A
own gradle build file with dependency on shared:domain
-> shared
gradle build file for shared modules
-> shared:domain
-> shared:B
我已经创建了一个小的示例项目来演示这种行为-
我还记录了gradle的一个错误-
目前我找到的解决办法是
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
repositories {
mavenLocal()
}
}
也许可以查看--info和--debug日志。:food orders online admin business:PublishToAvenLocal(线程[main,5,main])STARTED.:食品订单在线管理业务:PublishToAvenLocal跳过任务:食品订单在线管理业务:PublishToAvenLocal,因为它没有任何操作:食品订单在线管理业务:PublishToAvenLocal最新:食品订单在线管理业务:PublishToAvenLocal(线程[main,5,main])已完成。花了0.007秒。我已经知道任务被跳过了。我的问题是为什么。我认为subprojects.findAll()不会返回任何内容。那么如何访问所有子项目?我可以在每个项目中单独做,但如果我能做到这一点,那将是重复和愚蠢的。谢谢你如此详细和解释清楚的答案。我想我会采取第三种解决方法。我也希望Gradle团队能尽快解决这个问题。考虑到我花了这么长时间才找到这个bug,我很高兴能与其他人分享解决方法。也许你应该在论坛上而不是在论坛上提出它。嗨,Mirko,我很乐意,但就我所知,提出问题的唯一方法是通过论坛,如果你知道其他,请提供我的链接,我可以注册添加错误的问题跟踪。Thanks@Karl你链接的页面上的文字说:“如果你想报告Gradle的问题,请使用discussion.Gradle.org创建一个“bug”帖子”,我上面帖子中的链接指向我差不多2年前提交的bug报告。参考:是否需要
mavenLocal()
bit?@dkb提供的链接声明:“您不需要在发布.存储库
部分中有mavenLocal()
。@M.Justin存储库。mavenLocal
部分不是必需的。我的设置没有它,我的人工制品仍然被发布到我的本地.m2
。这让我很开心。这对我有用。在不同的帖子中,有很多其他的建议,但只有这对我有效。谢谢:)