簡體   English   中英

來自s3的gradle maven依賴的未解析引用

[英]Unresolved reference from gradle maven dependency via s3

我嘗試將庫發布到私有S3 maven存儲庫。 上傳由密碼保護,但是為了下載,該庫是公開的。 aar文件上傳沒有問題(以及pom / md5 / sha1),我可以在我的S3桶中看到它,下載它甚至手動添加這個作為依賴項到我的項目。 但是當我像這樣加載這個依賴:

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

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

......有一個問題。 Gradle同步完成沒有問題,看起來已經下載了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
            }
        }
    }
}

顯然那些部署插件(這個和bintray也是如此)在涉及風味時會有一些主要的困難。 我不知道具體細節,但它與他們試圖根據文件名解析工件名稱有關。 這一行:

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

這就是為什么我的工件被命名為例如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 ,顯然很好。

我不知道為什么第一種命名方式不起作用,我假設有一個設置可以將它傳播到元數據。 在這個問題上仍然有賞金,所以也許有人可以解決這個謎團嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM