When we build our application using gradle, it is throwing the exception below .Following is the build.gradle code:
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
}
}
}
I am getting the below error : Build file, line: 81
Failed to notify build listener.
‘org.gradle.api.file.FileCollection org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal.getPublishableFiles()’
Can anyone help me please ?
Advertisement
Answer
For future readers who stumble upon this error.
I’ve been piece mealing together a working jfrog publish from here:
Gradle Artifactory Plugin – How to publish artifacts from multiple modules in a project?
I got the error, then realized I was not using android.
I got this error when I had this:
publishing {
publications {
Android(MavenPublication) {
groupId "${projectGroupName}"
artifactId 'MyFirstArtifactId'
version "${projectVersionName}"
artifact "$buildDir/blah/blah/mything-1.0-SNAPSHOT.jar"
}
}
}
and changed “Android” to “mavenJava” as seen below.
publishing {
publications {
mavenJava(MavenPublication) {
groupId "${projectGroupName}"
artifactId 'MyFirstArtifactId'
version "${projectVersionName}"
artifact "$buildDir/blah/blah/mything-1.0-SNAPSHOT.jar"
}
}
}
My only other hint is that i have this. keep in mind i have a multi-module gradle project and i do not want to artifactory-publish the root module.
subprojects {
apply plugin: 'java-library'
apply plugin: "maven-publish"
}
So my in general idea is : are you missing an apply-plugin ?
Documentation:
https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:complete_example
=========
Another Hint Project:
https://github.com/foragerr/SO-35851251-Multiproject-Artifactory-Publish
=========
Another longer answer I posted:
How do I generate maven-metata.xml with maven-publish and the artifactory-gradle-plugin?
=========
Just a reminder for newbies.
https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html
below is example code from url just above:
publishing {
publications {
myPublicationName(MavenPublication) {
// Configure the publication here
}
}
}
this is one reason why using “keywords” for the “myPublicationName” make it harder to discern.
=========
https://gradle.github.io/gradle-script-kotlin-docs/userguide/publishing_maven.html
publishing { publications { mavenJava(MavenPublication) { from(components.java) } } }
I’m still trying to figure out if mavenJava is just another name (like “myPublishingName” and the ‘from’ is the more important part. or it is a special name / reserved keyword.