45

我是 Gradle 和 bintray 的新手。我想发布这个项目,以便 Maven 和 SBT 用户可以随时使用它。我不是这个包的原作者;它似乎已被遗弃;我只想发布当前的 HEAD。

~/.gradle/gradle.properties是这样的:

bintrayUser=mslinn
bintrayKey=blahblah

build.gradle看起来像这样:

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'
}

这是问题所在:

$ 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

我正在寻找有关如何解决错误消息的建议,以及有关我可能遇到的任何设置问题的建议,包括将此项目纳入 JCenter,以便所有人都可以使用已发布的 bintray 项目。

4

8 回答 8

51

只是总结评论中的讨论:

Gradlejcenter()在 1.7 版本中添加了快捷方式。它之前的任何版本都将因此异常而失败。您仍然可以通过将 jcenter 添加为普通的 maven 存储库来使用它:

repositories {
    maven {
        url "https://jcenter.bintray.com"
    }
    ....
}
于 2014-12-15T05:13:40.717 回答
6

我在一个 Android 项目中得到了这个,需要将 Gradle 升级到 4.1 in gradle-wrapper.properties.

于 2017-10-12T18:07:23.267 回答
6

转到 Android项目 Tab,在资源管理器中折叠 Gradle Scripts。您将找到一个名为 gradle-wrapper.properties的文件。

打开文件并选择所有并粘贴以下代码:

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

立即同步

但在此之前您必须在build.gradle (Project) 文件中进行更改

打开文件选择全部并复制到整个工作表下面的代码:

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
}

立即同步

于 2018-08-27T12:36:10.717 回答
4

我遇到了同样的错误。以下方法(如此所述)对我有用。

添加任务

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

并运行一次。之后,开始使用gradlew而不是gradle

于 2015-01-22T10:45:15.303 回答
1

gradle使用命令在命令行上构建 android 应用程序时出现此错误

尝试:

./gradlew

代替

毕业典礼

于 2019-01-24T17:38:08.847 回答
1

我有同样的麻烦。就我而言,这是一个新手错误。也许它对任何人都有帮助。我将代码从我更改的代码还原为原始代码。

我改变它的代码:

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

原代码:

buildscript {
    ext.kotlin_version = '1.2.71'
    repositories {
        google()
        jcenter()
    }
于 2019-01-05T03:06:51.567 回答
0

当我在中间停止 gradle 下载时发生了这种情况,要解决这个问题,我们必须删除旧的 gradle 并更新和同步

删除使用

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

要更新,请将其添加到您的 graddle-properties : distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

然后同步

于 2019-04-01T18:40:14.233 回答
0

尽管听起来很愚蠢,但请确保您在自己的线路上有 jcenter。我复制粘贴了一些代码,结果 jcenter 不在它自己的行上。

allprojects {
    repositories {
        google {
            content {
                ...
            }
        }                  jcenter() // DERP
        maven { url "https://jitpack.io" }
        maven { url 'https://maven.google.com/' } 
    }
}
于 2020-06-08T18:14:06.103 回答