【发布时间】:2016-06-14 23:30:59
【问题描述】:
尝试将 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
}
}
}
当我对其他仅“java”的项目执行此操作时,一切正常。我已阅读其他问题,这些问题表明问题可能与应用插件的顺序有关,但这似乎不起作用。
有谁知道为什么android插件会导致这个问题?
附:我在命令行上使用 gradle (v2.6),而不是 Android Studio。
更新:
我试过这个解决方案:https://stackoverflow.com/a/32746509/1329791
错误消失了,但现在 init 脚本中未指定 project.version,因此使用了错误的存储库。
【问题讨论】: