Gradle : 未能通知构建侦听器

Gradle : Failed to notify build listener

当我们使用 gradle 构建应用程序时,它会抛出以下异常。以下是 build.gradle 代码:

buildscript {
    repositories{
        jcenter()
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.8.1"
        classpath "io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE"
    }
}

apply plugin: "idea"
apply plugin: "java-library"
apply plugin: "maven-publish"
apply plugin: "com.jfrog.artifactory"
apply plugin: "io.spring.dependency-management"

group = "com.xx.ff"
version = "2.1.5-SNAPSHOT"

wrapper {
    gradleVersion = "6.5"
    distributionType = Wrapper.DistributionType.ALL
}

repositories {
    jcenter()
    if (System.getenv('ARTIFACTORY_USER') == null || System.getenv('ARTIFACTORY_PASSWORD') == null) {
        logger.warn("Please set environment variables ARTIFACTORY_USER and ARTIFACTORY_PASSWORD")
    }
    maven {
        name "libs-snapshot"
        url "https://vvvvvvvvvvvvvvvv/artifactory/libs-snapshot/"
        credentials {
            username = System.getenv('ARTIFACTORY_USER')
            password = System.getenv('ARTIFACTORY_PASSWORD')
        }
    }
    maven {
        name "libs-release"
        url "https://vvvvvvvvvvvvvvvvvvvvvvvvvv/artifactory/libs-release/"
        credentials {
            username = System.getenv('ARTIFACTORY_USER')
            password = System.getenv('ARTIFACTORY_PASSWORD')
        }
    }
}

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

 idea.module {
    outputDir file("build/classes/java/main")
    testOutputDir file("build/classes/java/test")
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
    }
}

dependencies {
    api("org.springframework.boot:spring-boot-starter-security:${springBootVersion}")
    api("org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:${springBootVersion}")
    implementation("javax.validation:validation-api:${validationVersion}")
}

artifactory {
    contextUrl = "${artifactory_contextUrl}"
    publish {
        repository {
            repoKey = "libs-snapshot-local"
            username = System.getenv('ARTIFACTORY_USER')
            password = System.getenv('ARTIFACTORY_PASSWORD')
            maven = true

        }
        defaults {
            publications("mavenJava")
        }
    }
}

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

我收到以下错误: 构建文件,行:81

未能通知构建侦听器。

'org.gradle.api.file.FileCollection org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal.getPublishableFiles()'

有人可以帮我吗?

对于偶然发现此错误的未来读者。

我一直在拼凑一个工作中的 jfrog 从这里发布:

我收到错误,然后意识到我没有使用 android。

当我有这个时我得到了这个错误:

publishing {
    publications {
        Android(MavenPublication) {
            groupId "${projectGroupName}"
            artifactId 'MyFirstArtifactId'
            version "${projectVersionName}"
            artifact "$buildDir/blah/blah/mything-1.0-SNAPSHOT.jar"
        }
    }
}

并将“Android”更改为“mavenJava”,如下所示。

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId "${projectGroupName}"
            artifactId 'MyFirstArtifactId'
            version "${projectVersionName}"
            artifact "$buildDir/blah/blah/mything-1.0-SNAPSHOT.jar"
        }
    }
}

我唯一的其他提示是我有这个。请记住,我有一个 multi-module gradle 项目,我不想 artifactory-publish 根模块。

subprojects {
    apply plugin: 'java-library'
    apply plugin: "maven-publish"
}

所以我的总体想法是:您是否缺少 apply-plugin?

文档:

https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:complete_example

=========

另一个提示项目:

https://github.com/foragerr/SO-35851251-Multiproject-Artifactory-Publish

=========

我发布的另一个更长的答案:

=========

新手提醒。

https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html

下面是 url 上面的示例代码:

publishing {
  publications {
    myPublicationName(MavenPublication) {
      // Configure the publication here
    }
  }
}

这就是为什么对“myPublicationName”使用“关键字”会使其更难辨别的原因之一。

=========

https://gradle.github.io/gradle-script-kotlin-docs/userguide/publishing_maven.html

发布{ 出版物{ mavenJava(MavenPublication){ 来自(components.java) } } }

我仍在尝试弄清楚 mavenJava 是否只是另一个名称(如“myPublishingName”,'from' 是更重要的部分。或者它是一个特殊名称/保留关键字。