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.

Mike Slinn
  • 7,705
  • 5
  • 51
  • 85
  • 1
    You're probably using an old version of gradle that doesn't have this method yet. What does `gradle -version` say? – JB Nizet Dec 14 '14 at 15:01
  • 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 amd64 – Mike Slinn Dec 14 '14 at 18:14
  • 3
    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. – Peter Niederwieser Dec 14 '14 at 18:17
  • 1
    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: http://www.gradle.org/docs/current/userguide/gradle_wrapper.html. – JB Nizet Dec 14 '14 at 18:17
  • 3
    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: https://launchpad.net/~cwchien/+archive/ubuntu/gradle – Mike Slinn Dec 14 '14 at 18:30
  • 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'. – Mike Slinn Dec 14 '14 at 18:46

9 Answers9

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"
    }
    ....
}
EduardoFernandes
  • 3,091
  • 1
  • 13
  • 12
JBaruch
  • 22,610
  • 5
  • 62
  • 90
  • 2
    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? – Mike Slinn Dec 15 '14 at 05:19
  • 1
    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. – JBaruch Dec 15 '14 at 19:10
  • From Twitter: baruch mslinn because DSL has changed. You are using 1.0 with DSL for 0.6. We’ll update. – Mike Slinn Dec 18 '14 at 18:38
  • 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? – JBaruch Dec 19 '14 at 21:32
  • 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." – Mike Slinn Dec 20 '14 at 00:39
  • So I perfectly answered the first question and would close the second for being too broad. – JBaruch Dec 20 '14 at 16:34
  • 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 @JBaruch – Sagar Patel May 02 '19 at 11:25
6

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

Gabor
  • 7,352
  • 4
  • 35
  • 56
  • This worked for me. I used latest distributionUrl value according to https://developer.android.com/studio/releases/gradle-plugin.html – Barry Staes Apr 09 '18 at 13:25
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

Niket Joshi
  • 739
  • 5
  • 23
Eshan Chattaraj
  • 368
  • 1
  • 6
  • 19
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

Marc Van Daele
  • 2,856
  • 1
  • 26
  • 52
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()
    }
1

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

Try:

./gradlew

instead of

gradle

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

Minion
  • 964
  • 14
  • 16
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/' } 
    }
}
tir38
  • 9,810
  • 10
  • 64
  • 107
0

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