2016-03-26 3 views
0

При попытке опубликовать библиотеку android в локальном репозитории, который определен в init.gradle, появляется следующее сообщение об ошибке.Ошибка публикации Gradle с плагином для библиотеки Android

> Cannot configure the 'publishing' extension after it has been accessed. 

Я определил мои репозиториев Maven в ~/.gradle/init.gradle, так что они могут быть использованы во всех моих проектах.

allprojects { 

    apply plugin: 'maven-publish' 

    repositories.ext.mavenMyRepo = { 
     repositories.maven { 
      name "MyRepoSnapshot" 
      url "file:/home/me/mvn/snapshot" 
     } 
     repositories.maven { 
      name "MyRepoRelease" 
      url "file:/home/me/mvn/release" 
     } 
    } 

    publishing { 
     publications { 
      mavenMyRepo(MavenPublication) { 
       repositories.maven { 
        if(project.version.endsWith('-SNAPSHOT')) { 
         url "file:/home/me/mvn/snapshot" 
        } 
        else { 
         url "file:/home/me/mvn/release" 
        } 
       } 
      } 
     } 
    } 
} 

В моем проекте build.gradle:

apply plugin: 'com.android.library' 
apply plugin: 'maven-publish' 

archivesBaseName = 'my-android-lib' 
version = '1.0.0-SNAPSHOT' 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.5.0' 
    } 
} 

android { 
    compileSdkVersion 20 
    buildToolsVersion "23.0.2" 
} 

task jar(type: Jar, dependsOn: 'compileReleaseSources') { 
    from 'build/intermediates/classes/release' 
    manifest { 
     attributes("Implementation-Version": version) 
    } 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.slf4j:slf4j-api:1.7.5' 
} 

task sourcesJar(type: Jar) { 
    classifier "sources" 
    from 'src/main/java' 
} 

publishing { 
    publications { 
     mavenMyRepo(MavenPublication) { 
      pom.withXml { 
       asNode().appendNode('description', 'Android Library') 
      } 
      groupId 'my.group' 
      artifactId archivesBaseName 
      // from components.java 
      artifact sourcesJar 
     } 
    } 
} 

Все работает отлично, когда я делаю это с другими 'ява' только проекты. Я прочитал другие вопросы, которые предполагают, что проблема может быть связана с порядком применения плагинов, но это, похоже, не работает.

Кто-нибудь знает, почему плагин android вызовет эту проблему?

P.S. Я использую gradle (v2.6) в командной строке, а не в Android Studio.

UPDATE:

Я попытался это решение: https://stackoverflow.com/a/32746509/1329791

ошибка ушла, но теперь project.version не определен в сценарии инициализации поэтому используется неправильно хранилище.

ответ

0

Это сейчас работает с версией 2.1.2 плагина android.

Смежные вопросы