在 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 存储库中
这是我的第一个作品,请简单明了地解释
什么是 POM
、 wagon-git
和 deployerJar
以及最后我该如何解决这个错误:
我收到了这个错误:
错误:找不到参数的方法 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.gradle
s 杂质,除了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 存储库正在按照说明进行链接。
为了使事情正常工作,您需要在原始文件中做的只是替换 configurations
和 dependencies
部分的顺序。 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