在存储库容器上找不到参数 [] 的方法 jcenter()

Posted

技术标签:

【中文标题】在存储库容器上找不到参数 [] 的方法 jcenter()【英文标题】:Could not find method jcenter() for arguments [] on repository container 【发布时间】: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 【参考方案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。

【讨论】:

这对我有用。我根据developer.android.com/studio/releases/gradle-plugin.html使用了最新的distributionUrl值【参考方案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/'  
    

【讨论】:

以上是关于在存储库容器上找不到参数 [] 的方法 jcenter()的主要内容,如果未能解决你的问题,请参考以下文章

Gradle eclipse 插件:在存储库容器上找不到参数 [] 的方法 jcenter()。有关详细信息,请参阅错误日志

在我的手机上找不到 apk 使用的本机库

在 Mac 上找不到 Docker 容器日志文件

在以下类型的对象上找不到参数 [com.android.tools.build:gradle:3.3.0] 的方法 classpath():

错误:在项目':app'上找不到参数[目录'libs']的方法implimentation()

错误:在 Heroku 上找不到模块 Discord.js