我正在尝试创建一个基于gradle的多模块项目。还有一个项目包含支持可插拔构建配置的不同gradle脚本。其中一个脚本用于将工件发布到maven存储库。以下是该脚本的内容:
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
此脚本包含在其他项目的build gradle文件中。
apply from: '../../food-orders-online-main/artifact-publish.gradle'
当我运行构建任务时,它总是显示publishToMavenLocal任务是最新的,并且我在本地存储库中找不到工件。我做错了什么吗?
发布于 2015-01-06 20:31:47
我认为这可能是gradle的一个缺陷的表现,当模块以某种方式被依赖时,它们可能会失去publishMavenJavaPublicationToMavenLocal任务。
如果gradle确定某个模块没有publishMavenJavaPublicationToMavenLocal任务,那么publishToMavenLocal任务将始终报告它是最新的。
我发现的特定情况发生在多模块设置中,具有多个级别的嵌套模块。它可以总结如下,其中共享:域在被A依赖时丢失其publishMavenJavaPublicationToMavenLocal
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
我在这里创建了一个演示此行为的小示例项目-- https://github.com/piersy/Gradle2MavenPublishBug
我还在这里记录了gradle的一个错误- http://forums.gradle.org/gradle/topics/the-publishmavenjavapublicationtomavenlocal-task-disappears-from-a-project-when-that-project-is-depended-upon-in-a-specific-way
目前,我找到的解决方法是
发布于 2017-03-23 21:22:33
通过改编来自here的答案,它适用于我。
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
repositories {
mavenLocal()
}
}
https://stackoverflow.com/questions/26577614
复制相似问题