我将AAR发布给我的团队的另一部分,只签出这个AAR,而不签出源代码。
我想为他们提供源代码,无缝地(通过Ctrl + Click on class或Ctrl +B直接在Android Studio中获得源代码)。
据我所知,这只可能与.jar档案,而不是.aar。
下面是maven-publish配置文件。我可以将归档文件(调试、“发布”和源代码)发布到maven。我可以获得调试依赖项("xxx-debug.aar")。我可以手动下载源代码(“xxx-Soures.jar”),并通过"Choose sources...“链接它们。在Android Studio中。但链接并不像其他任何像样的库那样是自动的(我想到的是Retrofit或OkHttp ):
// MAVEN PUBLICATION
apply plugin: 'maven-publish'
task sourceJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier "sources"
}
publishing {
group = 'foo.bar.rootpackage'
version = "foobar1.0"
publications {
aar(MavenPublication) {
println("Maven publish: package name is ${aarName}")
groupId group
artifactId sdkModuleName
version version
artifact(sourceJar)
def debugAar = "$buildDir/outputs/aar/${aarName}-debug.aar"
if (new File(debugAar).exists()) {
artifact(debugAar) {
classifier 'debug'
extension 'aar'
}
}
def releaseAar = "$buildDir/outputs/aar/${aarName}-release.aar"
if (new File(releaseAar).exists()) {
artifact(releaseAar) {
extension 'aar'
}
}
//The publication doesn't know about our dependencies, so we have to manually add them to the pom
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
def compileTimeDependencies = configurations.api.allDependencies +
configurations.implementation.allDependencies +
configurations.releaseImplementation.allDependencies
appendDependencies(compileTimeDependencies, dependenciesNode)
}
}
}
repositories {
maven {
// PRIVATE MAVEN STUFF
}
}
}
ext {
appendDependencies = { Set<Dependency> compileTimeDependencies, dependenciesNode ->
compileTimeDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
if (!it.excludeRules.isEmpty()) {
def exclusionsNode = dependencyNode.appendNode('exclusions')
it.excludeRules.each { rule ->
def exclusionNode = exclusionsNode.appendNode('exclusion')
exclusionNode.appendNode('groupId', rule.group)
exclusionNode.appendNode('artifactId', rule.module ?: '*')
}
}
}
}
}在需要此依赖项的另一个项目的build.gradle中,我实现了如下依赖项:
debugApi("foo.bar.rootpackage:core:$foobar1.0:debug@aar") {
transitive = true
}
releaseApi("foo.bar.rootpackage:core:$foobar1.0@aar") {
transitive = true
}项目构建,但没有与源代码的“自动链接”。
如何修复?
发布于 2019-08-19 02:53:51
使用android-maven-publish。链接源包应该在生成的POM中发生。
https://stackoverflow.com/questions/57361203
复制相似问题