gpt4 book ai didi

java - 如何使用 maven-publish gradle 插件附加 AAR 文件的源代码?

转载 作者:太空狗 更新时间:2023-10-29 14:35:15 25 4
gpt4 key购买 nike

我将 AAR 发布给我团队的另一部分,该部分仅检查此 AAR,而不检查源代码。

我想无缝地向他们提供源代码(使用 Ctrl + 单击类或 Ctrl + B 直接在 Android Studio 中获取源代码)。

据我所知,只有 .jar 存档才有可能,.aar 不行。

这是 maven-publish 配置文件。我可以将文件(调试、“发布”和来源)发布到 Maven。我可以获得调试依赖项(“xxx-debug.aar”)。我可以手动下载源代码(“xxx-sources.jar”)并通过 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
}

项目构建,但没有与源的“自动链接”。

如何修复?

最佳答案

使用android-maven-publish .链接源包应该发生在生成的 POM 中。

关于java - 如何使用 maven-publish gradle 插件附加 AAR 文件的源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com