【问题标题】:Could not find method jcenter() for arguments [] on repository container在存储库容器上找不到参数 [] 的方法 jcenter()
【发布时间】:2015-02-12 17:54:27
【问题描述】:

我是 Gradle 和 bintray 的新手。我想发布this project,以便 Maven 和 SBT 用户可以随时使用它。我不是这个包的原作者;它appears to have been abandoned;我只想发布当前的 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 项目。

【问题讨论】:

  • 你可能使用的是旧版本的 gradle,它还没有这个方法。 gradle -version 说什么?
  • 今天通过 apt-get 在 XUbuntu 上安装。 $ gradle -version ---------------------------------------------- -------------- Gradle 1.5 ---------------------------------- -------------------------- Gradle 构建时间:2014 年 6 月 15 日星期日下午 3:27:36 UTC Groovy:1.8.6 Ant: Apache Ant(TM) 版本 1.9.4 编译于 2014 年 5 月 9 日 Ivy:非官方版本 JVM:1.8.0_25 (Oracle Corporation 25.25-b02) OS:Linux 3.16.0-28-generic amd64
  • 那是一个相当老的 Gradle 版本,确实没有 jcenter()。当然,您始终可以将 JCenter 配置为常规 Maven 存储库 (maven { url "..." }),而不是使用快捷方式。
  • gradle 1.5 已经很老了。当前版本是 2.2.1。最后一个 1.x 版本是 1.12。您应该升级,并考虑使用 gradle 包装器:gradle.org/docs/current/userguide/gradle_wrapper.html
  • 所以apt-get提供的Gradle已经过时了。我想知道如何通知适当的人以便他们可以更新 .deb?我会添加这个 ppa,似乎它应该给我当前版本:launchpad.net/~cwchien/+archive/ubuntu/gradle

标签: gradle bintray jcenter


【解决方案1】:

简单总结一下cmets中的讨论:

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

repositories {
    maven {
        url "https://jcenter.bintray.com"
    }
    ....
}

【讨论】:

  • 我使用 cwchein 的 PPA 更新了 Grade。似乎没有人在默认的 Debian 存储库中维护 .deb。但是,我遇到了当前的错误:> 没有为属性“packageName”指定值。 > 没有为属性“用户”指定值。 > 没有为属性“apiKey”指定值。 > 没有为属性“repoName”指定值。其中一些值在 build.gradle 中,有什么问题?
  • 我会说这些是单独的问题,值得单独提问。如果jcenter() 有效,我会接受答案并继续前进。我很乐意在专门的问题中为其他问题提供帮助。
  • 来自 Twitter:baruch mslinn,因为 DSL 发生了变化。您将 1.0 与 DSL 一起用于 0.6。我们会更新。
  • 我们的推特讨论与这个问题(以及正确答案)无关。 jcenter 是在 1.7 中添加的,这就是它在旧版本中失败的原因。为什么要删除接受和投票?
  • 帖子中的最后一句话是:“我正在寻找有关如何解决错误消息的建议,以及我可能遇到的任何设置问题的建议,包括将此项目纳入 JCenter,因此发布bintray 项目可供所有人使用。”
【解决方案2】:

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

【讨论】:

【解决方案3】:

转到 Android 项目选项卡,在资源管理器中折叠 Gradle 脚本。您将 找到一个名为 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
}

立即同步

【讨论】:

  • 此答案适用于 Android,而不是 Scala / SBT
  • @MikeSlinn 这只是 Android Gradle 文件..这不是 Scala..请检查第一个然后评论
  • 我是原创者。我想使用 Gradle 而不是在 Scala 项目中使用的 SBT。你在谈论别的东西。
【解决方案4】:

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

添加任务

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

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

【讨论】:

  • 我必须下载一个合适的新 gradle 才能运行“gradle wrapper”。
【解决方案5】:

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

我修改后的代码:

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

原代码:

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

【讨论】:

    【解决方案6】:

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

    试试:

    ./gradlew

    而不是

    分级

    【讨论】:

      【解决方案7】:

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

      删除使用

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

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

      然后同步

      【讨论】:

        【解决方案8】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-08-14
          • 2021-05-22
          • 1970-01-01
          • 2020-01-19
          • 1970-01-01
          • 2014-01-31
          • 2022-08-12
          • 1970-01-01
          • 2020-01-05
          相关资源
          最近更新 更多