gradle - 从 gradle 中的发布中排除一两个子项目

标签 gradle maven-publish

我有一个多项目 gradle 构建,我已经应用了 maven-publish所有人的插件subprojects在我的主构建文件中。

我还在那里定义了一个名为 mavenJava 的默认发布。 .

这一切都很好,现在当我运行 ./gradlew artifactoryPublish我从所有子项目中部署工件。

但是,我想将我的两个子项目排除在发布此 mavenJava 之外。出版物。

我尝试了很多方法,例如在 skipDefaultPublish 中定义 bool 值 ( ext )阻止 subprojects在我的主构建文件中阻止并在条件 if block 中包含发布定义并在 ext 中覆盖此变量我不想发布它的子项目 block 。这不起作用,gradle 提示它 Cannot configure the 'publishing' extension after it has been accessed. .

我尝试了其他的东西,但似乎没有任何效果。

我知道唯一可行的是在所有子项目中定义默认发布 block ,除了我不想发布的那些,但我有大约 20 个子项目,但只有两个不应该发布这种类型的工件,所以这不会这似乎不是最好的选择。

那么有什么方法可以配置所有子项目以发布工件但仅在两个子项目中覆盖它,以便他们不这样做?

更新

试图澄清我的项目是什么样的。

根构建.gradle

subprojects {
    apply plugin: 'maven-publish'

    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java

                artifactId = getCustomProjectId()
                groupId = 'com.our.group.id'
            }
        }
    }

    apply plugin: "com.jfrog.artifactory"

    artifactory {
        contextUrl = ourContextUrl
        publish {
            repository {
                repoKey = "ourRepoKey"
                username = "ourArtifactoryUser"
                password = "ourArtifactoryPass"
            }
            defaults {
                publications('mavenJava')
                publishArtifacts = true
                publishPom = true
            }
        }
    }
}

在一个应该发布工件的子项目中,而不是默认的:
project(':exsub'){
    publishing {
        publications {
            mavenSrc(MavenPublication) {
                groupId "com.our.group.id"
                artifactId "stuff-src"
                artifact srcStuff
            }
        }
    }

    artifactoryPublish {
        // publications.removeAll() //<- putting this here doesn't work
        // publications.remove('mavenJava') //<- neither does this

        publications ('mavenSrc') //<- this adds mavenSrc to the publication list but does not remove the mavenJava publication from it
    }
}

最佳答案

根据使用的插件,有多种发布工件的方法。
排除特定模块与现代 (Gradle 4.x-7.x) 一起发布 publish像任务:

tasks.withType(PublishToMavenRepository).configureEach { it.enabled = false }
旧版 uploadArchives :
uploadArchives.enabled = false
com.jfrog.artifactory插入:
artifactoryPublish.skip = true

关于gradle - 从 gradle 中的发布中排除一两个子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55579031/

相关文章:

gradle - 在所有项目文件上使用 Gradle 运行 Checkstyle

android-studio - 在android上运行gradle项目的问题

gradle - Maven发布存储库凭据取决于自定义任务

maven - Gradle 发布到 Maven 添加了一个后缀,该后缀似乎不适用于 Maven POM 依赖项

android - 我可以将 Android 数据绑定(bind)与 Maven 一起使用吗?

android - 签署我的 flutter 应用程序时,我无法构建该应用程序 *已编辑*

android - 应用程序 :mergeTestReleaseResourcesAAPT err(Facade for 495460572) :

gradle - BootJar + MavenJar。工件不是由这个构建产生的

android - maven-publish 多项目 Artifact 依赖项

Gradle Maven 发布到 nexus delombok 源代码