【问题标题】:Magic with publishing section in artifactoryPublish configurationartifactoryPublish 配置中带有发布部分的魔术
【发布时间】:2020-02-03 13:40:39
【问题描述】:

我在 build.gradle 配置中遇到了一些神奇的行为。 我正在尝试为带有子项目的项目启用 artifactoryPublish。 我有以下结构 根 --subproj1 --subproj2 --常见

gradle 版本 6.0.1

案例一

在根级别上,我构建了包含以下部分的 gradle 文件

subprojects {
    apply from: "$rootDir/gradle/artifactory.gradle"
}

在 artifactory.gradle 中

apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'

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

artifactory {
    contextUrl = artifactoryUrl
    publish {
        repository {
            repoKey = 'mvn-snapshot-local'
            password = artifactoryPassword
            username = artifactoryUser
        }
        defaults {
            publications('mavenJava')
            publishArtifacts = true
            publishPom = true
        }
    }
}

当我运行 artifactoryPublish 时它成功完成但什么也没发布

案例 2

当我像这样将发布部分从文件移动到顶层时

subprojects {
    apply from: "$rootDir/gradle/artifactory.gradle"
    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
            }
        }
    }
}

一切正常,构建成功并发布。

问题

这两种配置有什么区别,为什么它在第一种情况下不起作用? 如果我将所有与出版相关的部分放在一个地方而不是不同的地方,我认为看起来会更准确,但由于某种原因我不能。

【问题讨论】:

    标签: java gradle artifactory publishing maven-publish


    【解决方案1】:

    问题似乎是我错过了插件配置:

        pluginManagement {
        gradle.ext.artifactoryPassword = artifactory_password ?: "nokey"
        gradle.ext.artifactoryUser = artifactory_user ?: "nokey"
        repositories {
            mavenLocal()
            maven {
                url "${artifactoryUrl}/mvn-gradle-plugins"
                credentials {
                    username = gradle.ext.artifactoryUser
                    password = gradle.ext.artifactoryPassword
                }
            }
            maven {
                url "${artifactoryUrl}/mvn-libs-release"
                credentials {
                    username = gradle.ext.artifactoryUser
                    password = gradle.ext.artifactoryPassword
                }
            }
        }
    }
    

    存储库是在存储库部分配置的:

        repositories {
        if(version.toString().endsWith('SNAPSHOT')) {
            maven {
                url "$artifactoryUrl/mvn-libs-snapshot"
                credentials {
                    username artifactoryUser
                    password artifactoryPassword
                }
            }
        }
        maven {
            url "$artifactoryUrl/mvn-libs-release"
            credentials {
                username artifactoryUser
                password artifactoryPassword
            }
        }
        maven {
            credentials {
                password = artifactoryPassword
                username = artifactoryUser
            }
            url "$artifactoryUrl/mvn-external"
        }
        mavenLocal()
    }
    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
            }
        }
    }
    

    但直到我添加插件管理部分和更新版本的工件和侦察插件,它才起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多