在 Bitbucket 上发布一个 android 库作为 maven 工件问题

Posted

技术标签:

【中文标题】在 Bitbucket 上发布一个 android 库作为 maven 工件问题【英文标题】:publishing an android library on Bitbucket as a maven artifact issues 【发布时间】:2017-06-27 03:22:58 【问题描述】:

我正在尝试使用 this article 将 android 库作为 Maven 工件发布到 Bitbucket 存储库中

这是我的第一个作品,请简单明了地解释 什么是 POMwagon-gitdeployerJar 以及最后我该如何解决这个错误:

我收到了这个错误

错误:找不到参数的方法 deployerJar() [ar.com.synergian:wagon-git:0.2.3] 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象上。

我的项目级别 build.gradle

buildscript 
    repositories 
        jcenter()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:2.2.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    


allprojects 
    repositories 
        jcenter()
        maven  url "https://raw.github.com/synergian/wagon-git/releases"
    


task clean(type: Delete) 
    delete rootProject.buildDir

我的应用级别(库)build.gradle

apply plugin: 'com.android.library'

android 
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig 
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 2
        versionName "1.1"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    


dependencies 
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.google.firebase:firebase-messaging:9.2.1'
    compile 'com.google.firebase:firebase-crash:9.2.1'
    compile 'com.google.android.gms:play-services:9.2.1'


apply from: 'uploadArchives.gradle'

以及在 madule 库中创建的 uploadArchives.gradle 文件:

apply plugin: 'maven'

configurations 
    deployerJar


dependencies 
    deployerJar "ar.com.synergian:wagon-git:0.2.3"


uploadArchives 
    configuration = configurations.archives
    repositories.mavenDeployer 
        pom.groupId = "com.example"
        pom.artifactId = "myLibraryName"
        pom.version = "1.0"
        configuration = configurations.deployerJar
        repository(url: "git:master://git@bitbucket.org:myTeam/myLibraryName.git")
            authentication(userName: "my_bitbucket_username", password: "my_bitbucket_password")
        
        pom.project 
            name "myLibraryName"
            packaging "aar" //POM_PACKAGING
            description "Some Description"
            url "https://bitbucket.org/myTeam/myLibraryName"
            scm 
                url "https://bitbucket.org/myTeam/myLibraryName"
                connection "https://my_bitbucket_username@bitbucket.org/myTeam/myLibraryName.git"
                developerConnection "https://my_bitbucket_username@bitbucket.org/myTeam/myLibraryName.git"
            
            licenses 
                license 
                    name "The Apache Software License, Version 2.0"
                    url "http://www.apache.org/licenses/LICENSE-2.0.txt"
                    distribution "myLibraryName"
                
            
            developers 
                developer 
                    id "my_bitbucket_username"
                    name "my_bitbucket_name"
                    email "my_email"
                
            
        
    

谢谢

【问题讨论】:

【参考方案1】:

终于找到了解决办法

我删除了所有build.gradles 杂质,除了apply from: 'uploadArchives.gradle'

并将 uploadArchives object 的值移动到 gradle.properties 中,如下所示:

GROUP=com.example

并像这样使用:

uploadArchives 
    configuration = configurations.archives
    repositories.mavenDeployer 
        pom.groupId = GROUP
        ...
    

并将其添加到uploadArchies.gradle的末尾

allprojects 
    repositories 
        mavenCentral()
        maven  url "https://raw.github.com/synergian/wagon-git/releases"
    

【讨论】:

您好,您可以在上次编辑后发布所有三个 gradle 文件的更新吗?我关注了同一篇文章,但我找不到适合我的解决方案.. 非常感谢【参考方案2】:

POM 是 Project Object Model 的简称,是 Maven 中的基本工作单元。

https://maven.apache.org/guides/introduction/introduction-to-the-pom.html

wagon-git 是组 ID ar.com.synergian 的工件的名称

据我所知,deployerJar 的名称没有范围

【讨论】:

谢谢,但是为什么我们必须使用wagon-git 以及为什么我得到deployerJar 错误? wagon-git,支持在远程 Git SCM 存储库中部署工件。【参考方案3】:

我使用文章中的分步说明运行相同的问题,该 wagon 存储库正在按照说明进行链接。 为了使事情正常工作,您需要在原始文件中做的只是替换 configurationsdependencies 部分的顺序。 configurations 应该先走。在您的示例中,这也会导致与您在声明之前声明使用此配置类似的流程。

【讨论】:

【参考方案4】:

我在使用新的 Bitbucket API 2.0 时遇到了问题。 我现在正在使用:

repository(url: 'git:releases://https://' + USERNAME + ':' + PASSWORD + '@bitbucket.org/' + COMPANY + '/' + REPOSITORY_NAME + '.git')

而不是

repository(url: "git:master://git@bitbucket.org:myTeam/myLibraryName.git")
    authentication(userName: "my_bitbucket_username", password: "my_bitbucket_password")

而且效果很好!

【讨论】:

以上是关于在 Bitbucket 上发布一个 android 库作为 maven 工件问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Bitbucket Pipelines 和 Docker 的 Android CI

./gradlew:没有这样的文件或目录 bitbucket android 图像

尝试将项目从 bitbucket 导入 android studio 时出现问题“存储库测试失败”

在 bitbucket 上使用 git 部署到 Heroku

如何在 Android Studio 中删除存储库并添加新存储库?

创建一个 monorepo 而不托管在包注册表上并通过 bitbucket 安装