简体   繁体   English

Gradle构建无法从自定义maven存储库获取依赖关系

[英]Gradle build failing to get dependency from custom maven repository

I have created a custom maven repo on BitBucket following the link . 我在链接后在BitBucket上创建了一个自定义maven仓库。 When trying to use the dependencies in my android project using Gradle I am getting following error 当我尝试使用Gradle在我的android项目中使用依赖项时,我收到以下错误

Executing tasks: [:app:compileDebugJava]

Configuration on demand is an incubating feature.
Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0
Checksum missing at https://bitbucket.org/test/maven-repo/raw/master/repository/com/test/com/testCommon/1.0/testCommon-1.0.pom.sha1 due to: For input string: "<!"
Download https://bitbucket.org/test/maven-repo/raw/master/repository/com/test/com/testCommon/1.0/testCommon-1.0.pom

[Fatal Error] testCommon-1.0.pom:2:10: Already seen doctype.

Checksum missing at https://bitbucket.org/test/maven-repo/raw/master/repository/com/android/support/support-v4/20.0.0/support-v4-20.0.0.pom.sha1 due to: For input string: "<!"
Download https://bitbucket.org/test/maven-repo/raw/master/repository/com/android/support/support-v4/20.0.0/support-v4-20.0.0.pom

[Fatal Error] support-v4-20.0.0.pom:2:10: Already seen doctype.

Checksum missing at https://bitbucket.org/test/maven-repo/raw/master/repository/com/android/support/support-annotations/20.0.0/support-annotations-20.0.0.pom.sha1 due to: For input string: "<!"
Download https://bitbucket.org/test/maven-repo/raw/master/repository/com/android/support/support-annotations/20.0.0/support-annotations-20.0.0.pom

[Fatal Error] support-annotations-20.0.0.pom:2:10: Already seen doctype.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugCompile'.
   > Could not resolve com.test.com:testCommon:1.0.
     Required by:
         SettingsAid:app:unspecified
      > Could not parse POM https://bitbucket.org/test/maven-repo/raw/master/repository/com/test/com/testCommon/1.0/testCommon-1.0.pom
         > Already seen doctype.

I have changed the link. 我已经改变了链接。 But opening the link directly returns the checksum. 但是直接打开链接会返回校验和。

Below is my build.gradle 下面是我的build.gradle

apply plugin: 'com.android.application'
apply plugin: 'maven'
android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.test.sampleapp"
        minSdkVersion 11
        targetSdkVersion 19
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}
repositories {
    mavenCentral()
    maven {
        credentials {
            username "test@gmail.com"
            password "test"
        }
        url "https://bitbucket.org/test/maven-repo/raw/master/repository/"
    }
}
dependencies {
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.test.com:testCommon:1.0'
    compile files('libs/GoogleAdMobAdsSdk-6.4.1.jar')
}

I am not sure what I am doing wrong here. 我不确定我在这里做错了什么。 I have also followed this link . 我也跟着这个链接 Can anybody help me in fixing this. 任何人都可以帮我解决这个问题。

Update 1: 更新1:

When I checked ~.gradle folder, even after giving the credentials it is not logging in and saving the full page. 当我检查〜.gradle文件夹时,即使在提供凭据后它也没有登录并保存整页。 When I changed my repo from private to public the code started working. 当我将我的repo从私有更改为public时 ,代码开始工作。 But I do not want to make my repo public. 但我不想让我的回购公开。 How to make gradle to use the login credentials passed? 如何让gradle使用传递的登录凭据?

Thanks. 谢谢。

I fixed the issue by changing repo path to : 我通过将repo路径更改为:

"https://"+username+":"+password+"@bitbucket.org/test/maven-repo/raw/master/repository/"

UserName and password are set in gradle.properties . 用户名和密码在gradle.properties中设置。

我的团队和我使用Bitbucket REST API解决了它,你可以在这个答案中找到更多细节: https//stackoverflow.com/a/30117276/4877779

i used to struggle against this problem for three days. 我过去常常与这个问题作斗争三天。 according to your code, here is my solution. 根据你的代码,这是我的解决方案。 hope that save your life. 希望拯救你的生命。

  1. your maven url is wrong. 你的maven网址错了。 please use the right api of bitbuckest.org. 请使用bitbuckest.org的正确api。 and the url format should be https://api.bitbucket.org/1.0/repositories/team-or-user-name/prject-name/raw/branch-name . 网址格式应为https://api.bitbucket.org/1.0/repositories/team-or-user-name/prject-name/raw/branch-name example: https://api.bitbucket.org/1.0/repositories/yolonetltd/yolonet-mvn-repo/raw/releases/ . 例如: https//api.bitbucket.org/1.0/repositories/yolonetltd/yolonet-mvn-repo/raw/releases/ note that do not use api.bitbucket.org/2.0, use api.bitbucket.org/1.0! 请注意,不要使用api.bitbucket.org/2.0,请使用api.bitbucket.org/1.0!

     repositories { mavenCentral() maven { credentials { username "xxxxx" // note, not email, use login user name please! password "xxxxx" } url "https://api.bitbucket.org/1.0/repositories/test/maven-repo/raw/master" // note, use api 1.0, do not use api 2.0! } } 
  2. if your dependency is aar format, you should add @aar after the dependency description. 如果您的依赖项是aar格式,则应在依赖项描述之后添加@aar dependencies closure should like below. 依赖关闭应该如下所示。 otherwise gradle will throw dependency not found error. 否则gradle将抛出依赖项未找到错误。

     dependencies { ... compile 'com.test.com:testCommon:1.0@aar' ... } 
  3. make sure your remote bitbucket maven repository holds the complete files directory like below. 确保您的远程bitbucket maven存储库保存完整的文件目录,如下所示。 otherwise gradle will also throw dependency not found error. 否则gradle也会抛出依赖未找到的错误。

     | ├── com │ ├── as-gradle │ │ └── demo │ │ └── localrepo │ │ ├── 1.0.0 │ │ │ ├── localrepo-1.0.0.aar │ │ │ ├── localrepo-1.0.0.aar.md5 │ │ │ ├── localrepo-1.0.0.aar.sha1 │ │ │ ├── localrepo-1.0.0.pom │ │ │ ├── localrepo-1.0.0.pom.md5 │ │ │ └── localrepo-1.0.0.pom.sha1 │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ └── maven-metadata.xml.sha1 
add   authentication {

            basic(BasicAuthentication)
        }

        maven {
            credentials {
                username ''
                password ''
            }
            authentication {
                basic(BasicAuthentication)
            }
            url "https://bitbucket.org/USER/REPO/raw/BRANCH/"
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在Android Studio Gradle上包含来自Maven本地存储库的依赖项 - Include dependency from Maven local repository on Android Studio Gradle 来自Maven local的Gradle依赖 - Gradle dependency from Maven local 将 Maven 存储库添加到 build.gradle - add maven repository to build.gradle 使用Maven存储库进行Gradle离线构建 - Gradle Offline Build Using Maven Repository 如何将自定义 Maven 存储库添加到 gradle - How to add custom maven repository to gradle 在 `settings.gradle.kts` 中使用 `dependencyResolutionManagement` 时,如何在 `gradle.build.kts` 中配置自定义 maven 依赖项? - How does one configure custom maven dependency in `gradle.build.kts` while using `dependencyResolutionManagement` in `settings.gradle.kts`? 给定多个 maven 存储库,Gradle 将选择哪个依赖项? - Which dependency will Gradle choose given multiple maven repository? Android Studio Gradle:请从您的构建脚本中删除 `jcenter()` Maven 存储库的用法/JCenter 已结束生命周期 - Android Studio Gradle: Please remove usages of `jcenter()` Maven repository from your build scripts / JCenter is at end of life Gradle无法从远程Maven存储库下载 - Gradle cannot download from remote maven repository 如何加快我的gradle构建并跳过失败的依赖项查找? - How to speed up my gradle build and skip failing dependency lookups?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM