Android AAR 工件发布在组装之前执行
Posted
技术标签:
【中文标题】Android AAR 工件发布在组装之前执行【英文标题】:Android AAR artifactory publish executes before assemble 【发布时间】:2019-10-09 07:44:55 【问题描述】:我有一个 android 库项目,我正在尝试使用 gradle 将 AAR 文件发布到 JFrog artifactory。 获得 AAR 文件并执行构建任务后,发布按预期工作,问题是如果 AAR 文件不存在,我将无法在构建过程中执行此操作。
我想在有新文件可用时发布 AAR 文件。我尝试放置 assembleIntegrated.finalizedBy (artifactoryPublish),但这并没有帮助。 在生成 AAR 之前触发发布任务。
mygradle.gradle -->
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
File AARFile1 = file("$buildDir/outputs/aar/my_aar_file1.aar")
File AARFile2 = file("$buildDir/outputs/aar/my_aar_file2.aar")
publishing
publications
AAR1(MavenPublication)
groupId repoFolder
version libVersion
// Tell maven to prepare the generated "*.aar" file for publishing
if (AARFile1.exists())
artifactId libRelease
artifact(AARFile1)
else
println 'AAR1 files not found in' + AARFile1.absolutePath
AAR2(MavenPublication)
groupId repoFolder
version libVersion
// Tell maven to prepare the generated "*.aar" file for publishing
if (AARFile2.exists())
artifactId libDebug
artifact(AARFile2)
else
println 'AAR2 files not found in' + AARFile2.absolutePath
artifactory
contextUrl = "https://bintray.com/jfrog/artifactory:8080"
publish
repository
// The Artifactory repository key to publish to
repoKey = 'my_key'
username = 'my_username'
password = 'my_encrypt_password'
defaults
// Tell the Artifactory Plugin which artifacts should be published to Artifactory.
if (AARFile1.exists() || AARFile2.exists())
publications('AAR1', 'AAR2')
publishArtifacts = true
// Properties to be attached to the published artifacts.
properties = ['qa.level': 'basic', 'dev.team':'Me' ]
// Publish generated POM files to Artifactory (true by default)
publishPom = true
我看到 gradle 任务列表如下:
executing tasks: [assembleIntegrated]
AAR1 files not found in /myfolder/.../my_lib_project/app/build/outputs/aar/my_aar_file1.aar
AAR2 files not found in /myfolder/.../my_lib_project/app/build/outputs/aar/my_aar_file2.aar
.
.
.
> Task :app:preBuild UP-TO-DATE
> Task :app:test UP-TO-DATE
> Task :app:check
> Task :app:build
> Task :app:artifactoryPublish
> Task :artifactoryDeploy
【问题讨论】:
【参考方案1】:发生这种情况是因为您手动将文件添加到 maven 发布。当 maven 发布运行时,这些文件不存在。因此,您应该手动配置任务依赖项。当您将发布添加到项目中时,Gradle 将使用您的发布名称和 repo 名称的组合生成一些任务。类似的东西:publishpublicationNamePublicationToRepositoryNameRepository
。因此,您应该将这些任务设置为依赖于assembleIntegration
任务。
或者你可以使用android-maven-publish插件,它会自动完成这项工作。
【讨论】:
android-maven-publish
插件已弃用,因为 AGP 正式支持 maven-publish
。使用 AGP 3.6.0 或更高版本。以上是关于Android AAR 工件发布在组装之前执行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中签署 AAR Artifacts?
[Android][Maven] 找不到 androidx 工件
Android 完美解决 Direct local .aar file dependencies are not supported when building an AAR.