gpt4 book ai didi

android - 通过 s3 来自 gradle maven 依赖项的未解析引用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:54 27 4
gpt4 key购买 nike

我尝试将库发布到私有(private) S3 maven 存储库。上传受密码保护,但下载图书馆对公众开放。 aar 文件上传没有问题(连同 pom/md5/sha1),我可以在我的 S3 存储桶中看到它,下载它,甚至手动将此 aar 作为依赖项添加到我的项目中。但是,当我像这样加载此依赖项时:

allprojects {
repositories {
google()
jcenter()
maven { url "http://myrepo.com" }
}

//in the project's build.gradle
implementation 'com.mylib:mylib:0.1.1'

...有一个问题。 Gradle sync 顺利完成,看起来 aar 已下载,但它从未出现在 Android Studio 中的“外部库”部分,并且代码不可用(Unresolved reference: MyLib) .

当然,我尝试过重建、使缓存失效并将其应用于不同的项目。

有什么让它发挥作用的想法吗?

这是 maven-publish 代码的样子。

android.libraryVariants.all { variant ->

if (variant.buildType.name == "release" && variant.flavorName == "prod") {

variant.outputs.all { output ->

publishing.publications.create(variant.name, MavenPublication) {

artifact source: output.outputFile, classifier: output.name

pom.withXml {
def dependencies = asNode().appendNode('dependencies')

configurations.getByName(variant.name + "CompileClasspath").allDependencies
.findAll { it instanceof ExternalDependency }
.each {
def dependency = dependencies.appendNode('dependency')

dependency.appendNode('groupId', it.group)
dependency.appendNode('artifactId', it.name)
dependency.appendNode('version', it.version)

}
}
}
}

}
}

tasks.all { task ->
if (task instanceof AbstractPublishToMaven) {
task.dependsOn assemble
}
}

publishing {

Properties properties = new Properties()
properties.load(file('maven.properties').newDataInputStream())

def user = properties.getProperty("maven.user")
def password = properties.getProperty("maven.password")

repositories {
maven {
url "s3://myrepo.com/"
credentials(AwsCredentials) {
accessKey user
secretKey password
}
}
}
}

最佳答案

显然,当涉及到 flavor 时,那些部署插件(包括这个插件和 bintray 插件)会遇到一些重大困难。我不知 Prop 体细节,但这与他们试图根据文件名解析 Artifact 名称有关。这一行:

artifact source: output.outputFile, classifier: output.name

是我的 Artifact 被命名为 e.g. 的原因com/mylib/mylib/0.1.1/mylib-0.1.1-prod-release.aar。从 maven 加载依赖时,不知何故无法识别。将此行更改为:

artifact source: output.outputFile, classifier: null

使文件看起来像这样 com/mylib/mylib/0.1.1/mylib-0.1.1.aar 这显然很好。

我不知道为什么第一种命名方式不起作用,我假设有一个设置可以将它传播到元数据。这个问题还有赏金,所以也许有人可以解开这个谜团?

关于android - 通过 s3 来自 gradle maven 依赖项的未解析引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798371/

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