尝试将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,因此使用了错误的存储库。
答案 0 :(得分:0)
现在正在使用Android插件的2.1.2版。