将具有多个模块的 Android 库发布到 jFrog 工件时出现问题

Posted

技术标签:

【中文标题】将具有多个模块的 Android 库发布到 jFrog 工件时出现问题【英文标题】:Issue in publishing Android library with multiple modules to jFrog artifactory 【发布时间】:2021-09-27 17:16:33 【问题描述】:

我的 android 项目中有 2 个库模块。

mainlibrary
  -sublibrary

子库模块正在主库中使用。在build.gradle (Module: mainlibrary)里面,我已经导入了整个子库模块-

implementation project(':sublibrary')

这就是我使用 jFrog 工件将 ma​​inlibrary 作为库发布的方式,代码存在于 build.gradle (Module: mainlibrary) -

publishing 
    publications 
        aar(MavenPublication) 
            groupId 'in.mikel.reusablelibs'
            version '1.0.4'
            artifactId project.getName()
            artifact("$buildDir/outputs/aar/$project.getName()-release.aar")
        
    


artifactory 
    contextUrl = 'https://mikel.jfrog.io/artifactory/'
    publish 
        repository 
            // The Artifactory repository key to publish to
            repoKey = 'mikelcl-gradle-release-local'

            username = "***"
            password = "***"
        
        defaults 
            // Tell the Artifactory Plugin which artifacts should be published to Artifactory.
            publications('aar')
            publishArtifacts = true

            // Properties to be attached to the published artifacts.
            properties = ['qa.level': 'basic', 'dev.team': 'core']
            // Publish generated POM files to Artifactory (true by default)
            publishPom = true
        
    

我还希望在发布到 jFrog 工件时打包 子库

我需要在 build.gradle (Module: sublibrary) 中写单独的信息吗?怎么处理?

【问题讨论】:

【参考方案1】:

您不必编写单独的 build.gradle 文件。您可以在根 build.gradle 中配置 sublibrary。 例如:

project('sublibrary') 
    publishing 
        publications 
            aar(MavenPublication) 
                groupId 'in.mikel.reusablelibs'
                version '1.0.4'
                artifactId project.getName()
                // Tell maven to prepare the generated "*.aar" file for publishing
                artifact("$buildDir/outputs/aar/$project.getName()-release.aar")
            
        
    
    artifactoryPublish 
        publications(publishing.publications.aar)
    

确保在 sublibrary 项目中应用 Artifactory 和 maven-publish 插件:

apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'

阅读更多:

    Example Documentation

【讨论】:

以上是关于将具有多个模块的 Android 库发布到 jFrog 工件时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Android 库 - 使用 Gradle 将多个变体发布到本地 Maven 存储库

将 kotlin 多平台库发布到 Maven Central(InvalidMavenPublicationException 多个工件具有相同的......)

Android 公共资源作为具有模块化结构的 Android 应用程序的库

Android Studio - 向所有模块添加依赖项

如何将“aar”库添加到 AOSP?

使用 android studio 混淆多个模块