При попытке опубликовать библиотеку 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 не определен в сценарии инициализации поэтому используется неправильно хранилище.