首页 > 解决方案 > 如何使 aar 成为库中的默认工件

问题描述

我需要在公司自己的服务器上发布一个关于 Sonatype 的库。我使用了 maven-publish 插件和以下实现。

apply plugin: 'maven-publish'

task androidSourcesJar(type: Jar) {
    archiveClassifier.set('sources')
    if (project.plugins.findPlugin("com.android.library")) {
        from android.sourceSets.main.java.srcDirs
        from android.sourceSets.main.kotlin.srcDirs
    }
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                groupId GROUP_ID
                artifactId ARTIFACT_ID
                version VERSION_NAME

                from components.release
                artifact androidSourcesJar

                pom {
                    name = ARTIFACT_ID
                    description = DESCRIPTION
                    url = 'library url'
                    licenses {
                        license {
                            name = 'License'
                            url = 'license url'
                        }
                    }
                    developers {
                        developer {
                            id = 'dev id'
                            name = 'dev name'
                            email = 'dev mail'
                        }
                    }
                    scm {
                        connection = 'url.git'
                        developerConnection = 'url.git'
                        url = 'url.git'
                    }
                }
            }
        }

        repositories {
            maven {
                url MAVEN_REPOSITORY_URL
                credentials {
                    username = USER_NAME
                    password = PASSWORD
                }
            }
        }
    }
}

该库已成功发布,但是当我使用它时,我必须指定我需要 aar,如下所示。

implementation 'com.companyname.android:library-name:1.0.0@aar'

如果没有 aar 规范,我应该怎么做才能使用它?像下面这样。

implementation 'com.companyname.android:library-name:1.0.0'

所以 Gradle 可以找到 aar 文件并将其添加到外部库中。

标签: androidgradlenexussonatypemaven-publish

解决方案


您必须aar在出版物中定义 as 工件:

artifact("$buildDir/outputs/aar/something-release.aar")

看一个简单的例子这个答案


推荐阅读