2014-12-14 4 views
37

Я новичок в Gradle and bintray. Я хочу опубликовать this project, так что он легко доступен пользователям Maven и SBT. Я не являюсь автором этого пакета; его appears to have been abandoned; Я просто хочу опубликовать текущий HEAD.Не удалось найти метод jcenter() для аргументов [] в контейнере хранилища

~/.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 

Я ищу советы о том, как разрешить сообщение об ошибке и советы по любым проблемам настройки, которые я, вероятно, буду связывать r, включая этот проект в JCenter, чтобы опубликованный проект bintray был доступен для всех.

+1

Возможно, вы используете старую версию градиента, которая еще не имеет этого метода. Что говорит 'gradle -version'? –

+0

Установлен через apt-get сегодня на XUbuntu. $ gradle -version ------------------------------------------- ----------------- Gradle 1.5 ----------------------------- ------------------------------- Время сборки гребенки: воскресенье, 15 июня 2014 г. 3:27:36 UTC Groovy: 1.8.6 Ant: Apache Ant (TM) версия 1.9.4 составлена ​​на 9 мая 2014 Ivy: не официальная версия JVM: 1.8.0_25 (Корпорация Oracle 25,25-b02) ОС: Linux 3.16.0- 28-generic amd64 –

+3

Это довольно старая версия Gradle, которая на самом деле не имеет 'jcenter()'. Конечно, вы всегда можете настроить JCenter как обычный репозиторий Maven ('maven {url" ... "}'), а не использовать ярлык. –

ответ

47

Просто подвести итоги дискуссии в комментариях:

Gradle добавил jcenter() ярлык в версии 1.7. Любая версия до этого не сработает с этим исключением. Вы все еще можете работать с jcenter, добавив его как обычный Maven репо:

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

Я обновил класс, используя PPA cwchein. Кажется, никто не поддерживает .deb в репозитории Debian по умолчанию. Тем не менее, я застрял на текущих ошибках:> Не указано значение для свойства 'packageName'. > Значение свойства для пользователя не указано. > Значение свойства apiKey не указано. > Значение свойства repoName не указано. Некоторые из этих значений находятся в build.gradle, что не так? –

+1

Я бы сказал, что это отдельные проблемы, которые заслуживают отдельного вопроса. Если 'jcenter()' работает, я бы принял ответ и перешел. Я буду рад помочь по другому вопросу в вопросе, посвященном этому. – JBaruch

+0

Из Твиттера: baruch mslinn, потому что DSL изменился. Вы используете 1.0 с DSL для 0.6. Мы обновим. –

4

Я побежал в ту же ошибку. Следующий метод (как описано here) работал для меня.

Добавить задачу

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

и запустите его один раз. Затем начать использовать gradlew вместо gradle

+0

Мне пришлось загрузить подходящий новый град, чтобы иметь возможность запускать «градиентную обертку». –

3

Я получил это в проекте Android, необходимых для обновления Gradle до 4,1 в gradle-wrapper.properties.