使用android库插件

时间:2016-03-26 20:55:00

标签: java android gradle

尝试将android库发布到init.gradle中定义的本地存储库时出现以下错误。

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

我在〜/ .gradle / init.gradle中定义了我的maven存储库,以便它们可以在我的所有项目中使用。

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。

更新

我尝试了这个解决方案:https://stackoverflow.com/a/32746509/1329791

错误消失了,但是现在init.脚本中未指定project.version,因此使用了错误的存储库。

1 个答案:

答案 0 :(得分:0)

现在正在使用Android插件的2.1.2版。