Could not find method jcenter() for arguments [] on repository container
Asked Answered
L

9

45

I'm new to Gradle and bintray. I want to publish this project so it is readily available to Maven and SBT users. I am not the original author of this package; it appears to have been abandoned; I just want to publish the current HEAD.

~/.gradle/gradle.properties is something like:

bintrayUser=mslinn
bintrayKey=blahblah

build.gradle looks like this.:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
    }
}
apply plugin: 'com.jfrog.bintray'

allprojects {
    apply plugin: 'idea'

    group = 'org.jfrog.example.bintray.gradle'
    version = '1.0'
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'maven-publish'
    apply plugin: 'com.jfrog.bintray'

    sourceCompatibility = 1.6
    targetCompatibility = 1.6

    dependencies {
        testCompile 'junit:junit:4.7'
    }

    // custom tasks for creating source/javadoc jars
    task sourcesJar(type: Jar, dependsOn: classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }

    task javadocJar(type: Jar, dependsOn: javadoc) {
        classifier = 'javadoc'
        from javadoc.destinationDir
    }

    // add javadoc/source jar tasks as artifacts
    artifacts {
        archives sourcesJar //, javadocJar
    }

    repositories {
        jcenter()
    }

    publishing {
        publications {
            mavenJava(MavenPublication) {
                if (plugins.hasPlugin('war')) {
                    from components.web
                } else {
                    from components.java
                }

                artifact sourcesJar {
                    classifier "sources"
                }

                artifact javadocJar {
                    classifier "javadoc"
                }
            }
        }
    }

    bintray {
        user = bintrayUser //this usually comes form gradle.properties file in ~/.gradle
        key = bintrayKey //this usually comes form gradle.properties file in ~/.gradle
        publications = ['mavenJava'] // see publications closure
        pkg { //package will be created if does not exist
            repo = 'Java-WebSocket'
//            userOrg = 'myorg' // an optional organization name when the repo belongs to one of the user's orgs
            name = 'Java-WebSocket'
            desc = 'Current HEAD of abandoned project'
            licenses = ['MIT']
            labels = ['websocket', 'java']
        }
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.10'
}

Here is the problem:

$ gradle bintrayUpload

FAILURE: Build failed with an exception.

* Where:
Build file '/var/work/experiments/websockets/Java-WebSocket/build.gradle' line: 3

* What went wrong:
A problem occurred evaluating root project 'Java-WebSocket'.
> Could not find method jcenter() for arguments [] on repository container.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

I'm looking for advice on how to solve the error message, and advice on any setup issues I am likely to encounter including this project into JCenter so the published bintray project is available to all.

Lone answered 14/12, 2014 at 14:46 Comment(6)
You're probably using an old version of gradle that doesn't have this method yet. What does gradle -version say?Honeybunch
Installed via apt-get today on XUbuntu. $ gradle -version ------------------------------------------------------------ Gradle 1.5 ------------------------------------------------------------ Gradle build time: Sunday, June 15, 2014 3:27:36 PM UTC Groovy: 1.8.6 Ant: Apache Ant(TM) version 1.9.4 compiled on May 9 2014 Ivy: non official version JVM: 1.8.0_25 (Oracle Corporation 25.25-b02) OS: Linux 3.16.0-28-generic amd64Lone
Thats quite an old Gradle version which indeed doesn't have jcenter(). Of course you can always configure JCenter as a regular Maven repository (maven { url "..." }), rather than using the shortcut.Reservoir
gradle 1.5 is very very old. The current version is 2.2.1. The last 1.x version was 1.12. You should upgrade, and also consider using the gradle wrapper: gradle.org/docs/current/userguide/gradle_wrapper.html.Honeybunch
So the Gradle provided by apt-get is out of date. I wonder how to notify the appropriate people so they can update the .deb? I'll add this ppa, seems like it should give me the current version: launchpad.net/~cwchien/+archive/ubuntu/gradleLone
Hmm, seems like my build.gradle is inadequate, and/or my ~/.gradle contents need more definiions FAILURE: Build failed with an exception. * What went wrong: Some problems were found with the configuration of task ':bintrayUpload'. > No value has been specified for property 'packageName'. > No value has been specified for property 'user'. > No value has been specified for property 'apiKey'. > No value has been specified for property 'repoName'.Lone
P
51

Just to summarize the discussion in comments:

Gradle added jcenter() shortcut in version 1.7. Any version prior to it will fail with this exception. You can still work with jcenter by adding it as a normal maven repo:

repositories {
    maven {
        url "https://jcenter.bintray.com"
    }
    ....
}
Peruzzi answered 15/12, 2014 at 5:13 Comment(7)
I updated Grade by using cwchein's PPA. Seems no-one maintains the .deb in the default Debian repo. However, I am stuck on the current errors: > No value has been specified for property 'packageName'. > No value has been specified for property 'user'. > No value has been specified for property 'apiKey'. > No value has been specified for property 'repoName'. Some of those values are in build.gradle, what's wrong?Lone
I'd say those are separate problems that deserve a separate question. If jcenter() works, I'd accept the answer and move on. I'll be glad to help on the other issue in a question dedicated to it.Peruzzi
From Twitter: baruch mslinn because DSL has changed. You are using 1.0 with DSL for 0.6. We’ll update.Lone
Our twitter discussion has nothing to do with this question (and the correct answer). jcenter was added in 1.7, that's why it fails in older version. Why did you remove the accept and the vote?Peruzzi
The final sentence in the posting is: "I'm looking for advice on how to solve the error message, and advice on any setup issues I am likely to encounter including this project into JCenter so the published bintray project is available to all."Lone
So I perfectly answered the first question and would close the second for being too broad.Peruzzi
I get issue while publishing jFrog Artifactory. it will show me "cannot find symbol return data().preference().getDeviceId();" Here deviceId is not there in generated Prefrence Interface. But its actually there in my code. it is like Transitive dependency. deviceId is a part of my coreData Module and coreData is imported in my coreSDK module. Please help @PeruzziShepperd
D
6

I got this in an Android project, needed to upgrade Gradle to 4.1 in gradle-wrapper.properties.

Dogtired answered 12/10, 2017 at 18:7 Comment(1)
This worked for me. I used latest distributionUrl value according to developer.android.com/studio/releases/gradle-plugin.htmlKenwood
L
6

Goto the Android project Tab, in explorer collapse Gradle Scripts.You will find a file called gradle-wrapper.properties .

Open the file and select all and paste the following code below:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

Sync now

But before that You have to make changes in build.gradle (Project) file

Open the file select All and Copy into entire sheet the below code:

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:4.0.0'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {url 'https://jitpack.io'}
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Sync Now

Leftist answered 27/8, 2018 at 12:36 Comment(3)
This answer pertains to Android, instead of Scala / SBTLone
@MikeSlinn This is Android Gradle file only..This is not Scala..Please Check 1st and then CommentLeftist
I am the original poster. I wanted to use Gradle instead of SBT, which is used in Scala projects. You are talking about something else.Lone
C
4

I ran into the same error. The following method (as described here) worked for me.

Add a task

task wrapper(type: Wrapper) {
    gradleVersion = '2.0'
}

and run it once. Afterwards, start using gradlew instead of gradle

Cassiodorus answered 22/1, 2015 at 10:45 Comment(1)
I had to download a suitable new gradle to be able to run "gradle wrapper".Patrilineal
N
1

I had the same trouble. In my case, it was a newie mistake. Maybe it could be helpful for anyone. I reverted the code from the one I changed to the original one.

The code as I changed it:

buildscript {
    ext.kotlin_version = '1.2.71'
    repositories { google()  jcenter()
    }

The original code:

buildscript {
    ext.kotlin_version = '1.2.71'
    repositories {
        google()
        jcenter()
    }
Nemeth answered 5/1, 2019 at 3:6 Comment(0)
A
1

got this error when building an android app on command-line with the gradle command

Try:

./gradlew

instead of

gradle

Annexation answered 24/1, 2019 at 17:38 Comment(0)
L
0

It happened with me when I stopped the gradle downloading in between, to resolve this we have to delete the older gradle and update and sync

to delete use

task clean(type: Delete) {
delete rootProject.buildDir
}

to udpate, add this to your graddle-properties : distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

And then sync

Lee answered 1/4, 2019 at 18:40 Comment(0)
B
0

As silly as it sounds, make sure you have jcenter on it's own line. I copy pasted some code and ended up with jcenter not on it's own line.

allprojects {
    repositories {
        google {
            content {
                ...
            }
        }                  jcenter() // DERP
        maven { url "https://jitpack.io" }
        maven { url 'https://maven.google.com/' } 
    }
}
Breathy answered 8/6, 2020 at 18:14 Comment(0)
D
0

The easiest solution that worked was to change JCenter() in both the repositories to mavenCentral() in build.gradle file.

Degreeday answered 4/7, 2022 at 13:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.