提交Library到私有Maven仓库

前言

提到Maven,Java开发者再熟悉不过了,它是一款依赖管理、用于构建的工具。在Android Studio里面,gradle支持jcenter()、mavenCentral() ,新版本的Android Studio默认使用jcenter()。AS团队从对开发者的友好程度上选择了jcenter。然而,很多中大型企业在内部搭建了Maven的私有仓库,为企业内部的开发人员提供便捷的包管理服务。
jcenter:https://bintray.com/
Sonatype MavenCentral:https://issues.sonatype.org/secure/Dashboard.jspa
可能是因为国内墙的原因,尝试在Jcenter上发布包,未果,总体上体验还不是那么尽如人意。
在AS里面,打开Project的build.gradle,可以看到默认使用的是jcenter如下:

buildscript {
    repositories {
        jcenter()
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

配置Library

私有Maven地址:https://maven.bingosoft.net
创建一个Library工程,例如bingosso-client。我们的目标是将该工程开发出的包提交到Maven。

接下来,打开Module对应的build.gradle文件,增加如下配置:

apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) {
                authentication(userName:MAVEN_USERNAME, password: MAVEN_PASSWORD)
            }
            repository(url: MAVEN_REPO_RELEASE_URL) {
                authentication(userName:MAVEN_USERNAME, password: MAVEN_PASSWORD)
            }
            pom.project {
                version '0.1.0'
                artifactId 'bingosso-client'
                groupId 'com.bingo.sso.android'
                packaging 'aar'
                description 'bingosso for android platform'
            }
        }
    }
}

从上面的配置,可以看出,build.gradle是通过uploadArchives这个节点的配置来对接Maven仓库的。上面用到的一些变量配置在gradle.properties里面:

#Maven仓库的URL
MAVEN_REPO_RELEASE_URL=https://maven.bingosoft.net/content/repositories/releases/
MAVEN_REPO_SNAPSHOT_URL=https://maven.bingosoft.net/content/repositories/snapshots/

#Maven用户名
MAVEN_USERNAME=xxxx
#登录nexus oss的密码
MAVEN_PASSWORD=xxxx123

关于snapshot和release

Maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)。在Android Studio中,无需直接面对pom文件,在AS中是自动生成的,只需要设置上面的version即可(例如1.2.0-SNAPSHOT)

执行uploadArchives

打开Android Studio左边的Gradle选项卡,双击uploadArchives即可:

之后会看到如下现象:

上传过程中遇到的问题

在执行上面的过程中可能会遇到问题,例如SSL的安全问题等。已经记录在此:http://blog.csdn.net/seafishyls/article/details/56846225

Gradle使用私有仓库的包

打开需要引用该仓库的Project对应的build.gradle,如下设置:

allprojects {
    repositories {
        jcenter()
        maven{
            url 'https://maven.bingosoft.net/content/repositories/releases/'
        }
    }
}

再打开Module对应的build.gradle,增加如下配置:

dependencies {
    compile 'com.bingo.sso.android:bingosso-client:0.1.0'
}

发布SNAPSHOT

发布snapshot(快照),顾名思义,它是经常变动的,或者叫做hotfix,使用者在同步的时候可以随时拿到最新的改动(release无法拿到拿到最新改动的代码)。发布快照只需要对版本号做处理:

version '0.1.0-SNAPSHOT' //注意必须是大写,否则发布不成功

同时,需要在引用的build.gradle里面添加如下配置:

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 1, 'minutes'
}

引用的时候就变成这样:

dependencies {
    compile 'com.bingo.sso.android:bingosso-client:0.1.0-SNAPSHOT'
}

整个过程还算比较顺利,有不对的地方欢迎指正!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gradle 是一种构建工具和依赖管理工具,它可以很方便地从 Maven 仓库中获取依赖项。 在 Gradle 的构建文件(通常是 `build.gradle`)中,我们可以使用 `repositories` 块来声明我们要使用的 Maven 仓库。例如,假设我们要使用 Maven 仓库中的 `"https://repo.maven.apache.org/maven2/"`,可以在构建文件中添加以下代码: ``` repositories { mavenCentral() } ``` 上述代码会让 Gradle 去仓库中搜索所需的依赖项。我们还可以根据需要添加其他仓库,比如其他公共 Maven 仓库私有 Maven 仓库: ``` repositories { mavenCentral() maven { url "https://mymavenrepo.com/maven" } } ``` 添加了仓库之后,我们就可以在 Gradle 文件中声明所需的依赖项。在 `dependencies` 块中可以使用 `compile`、`implementation`、`testCompile` 等关键字来指定我们要使用的依赖项。例如,我们要使用一个名为 `my-library` 的依赖项,可以在构建文件中添加以下代码: ``` dependencies { implementation 'com.example:my-library:1.0.0' } ``` 上述代码将会从 Maven 仓库中获取 `com.example:my-library:1.0.0` 版本的依赖项。 当我们修改了构建文件之后,Gradle 会自动下载所需的依赖项并将它们添加到项目中。 综上所述,要在 Gradle 中使用 Maven 仓库,我们需要在构建文件中声明所需的仓库,并在 `dependencies` 块中指定所需的依赖项。Gradle 会自动处理依赖项的下载和安装过程,使得我们可以方便地管理项目的依赖关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值