首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Gradle的publishToMavenLocal任务执行不正确

Gradle的publishToMavenLocal任务执行不正确
EN

Stack Overflow用户
提问于 2014-10-27 04:31:58
回答 2查看 23.4K关注 0票数 16

我正在尝试创建一个基于gradle的多模块项目。还有一个项目包含支持可插拔构建配置的不同gradle脚本。其中一个脚本用于将工件发布到maven存储库。以下是该脚本的内容:

代码语言:javascript
运行
复制
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文件中。

代码语言:javascript
运行
复制
apply from: '../../food-orders-online-main/artifact-publish.gradle'

当我运行构建任务时,它总是显示publishToMavenLocal任务是最新的,并且我在本地存储库中找不到工件。我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-06 20:31:47

我认为这可能是gradle的一个缺陷的表现,当模块以某种方式被依赖时,它们可能会失去publishMavenJavaPublicationToMavenLocal任务。

如果gradle确定某个模块没有publishMavenJavaPublicationToMavenLocal任务,那么publishToMavenLocal任务将始终报告它是最新的。

我发现的特定情况发生在多模块设置中,具有多个级别的嵌套模块。它可以总结如下,其中共享:域在被A依赖时丢失其publishMavenJavaPublicationToMavenLocal

代码语言:javascript
运行
复制
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

目前,我找到的解决方法是

  1. 删除A对shared:domain
  2. Make A的依赖一个子模块,其配置在其父模块构建文件中指定
  3. 为shared:domain提供其自己的gradle构建文件
票数 4
EN

Stack Overflow用户

发布于 2017-03-23 21:22:33

通过改编来自here的答案,它适用于我。

代码语言:javascript
运行
复制
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
    repositories {
        mavenLocal()
    }
}
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26577614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档