【问题标题】:How to version local gradle dependencies?如何对本地 gradle 依赖项进行版本控制?
【发布时间】:2020-02-27 01:05:41
【问题描述】:

我的 Android 项目包含一个作为 AAR 文件提供的库。

包含本地 AAR 文件有多种选择。 我可以声明一个文件依赖: implementation files('libs/mylib.aar')

或者我可以将 AAR 放入另一个模块,然后使用项目依赖项: implementation project(':mylibmodule')

但是,我想指定我的库的确切版本: mylib:1.0.0

不幸的是,我不知道如何在不使用远程存储库的情况下指定版本。 请注意,我确实想将库上传到 JitPack、MavenCentral 或类似网站。 我只想指定本地 AAR 文件的版本。

更新

AAR 文件是一个 Zip 文件,内容如下:

/proguard.txt      
/R.txt             
/AndroidManifest.xml  
/public.txt        
/classes.jar       
/res/values/values.xml  

请注意,AndroidManifest.xml 包含库的版本。 但是,我假设 gradle 总是需要一个 pom 文件来获取版本信息。

【问题讨论】:

  • 您只能使用 maven 存储库(公共或私有)来执行此操作。 aar 文件不包含 pom 文件中有关版本和依赖项的信息。
  • 这并不完全正确,因为 AAR 在 AndroidManifest.xml 中包含版本名称。但是,我知道 gradle 需要一个用于版本控制的 pom 文件。
  • @Mike76 让你回答这个问题,你是在 maven 中指定库版本吗?因为在那个包位置 com.anyilbray:anymodule:,可能是一堆版本。 “版本”是指确切的文件。现在让我们检查依赖项是如何工作的,您只需指定文件名,其中版本包含在 NAME 中。
  • 对不起,我不明白。你的意思是版本应该等于文件名?

标签: android gradle android-gradle-plugin dependency-management aar


【解决方案1】:

我意识到 gradle 允许在特定路径指定本地 Maven 存储库:

repositories {
   maven {
       url uri("${projectDir}/mylibdir")
   }
}

要使用本地 Maven 存储库,我需要将我的库构建为 Maven 工件。要创建 Maven 工件,只需在正确的子文件夹中创建 POM 文件即可。 AAR 文件保持不变,因为 Maven 不关心工件格式。 可以使用 maven-publish 插件自动创建 Maven 工件,例如:

apply plugin: 'maven-publish'

publishing {
    publications {
        myRelease(MavenPublication) {
            groupId 'com.foo'
            artifactId 'my-artifact'
            version '1.0.0'
            artifact("$buildDir/outputs/aar/my-artifact.aar")
        }
    }
    repositories {
        maven {
            url "$buildDir/repo"
        }
    }
}

但是,由于我并不真正需要使用 Maven,因此更简单的选择是将版本添加到 AAR 文件名中。 我在我的库的build.gradle 中使用以下 sn-p 执行此操作:

android.libraryVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "${archivesBaseName}-${variant.name}-${defaultConfig.versionName}.aar"
        }
    }

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多