Maven上传包的两种方法

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

自动打包+上传

此方式包含打包+上传两种功能,是自动集成一体的,不能单独拆分。

 

1、在library工程的build.gradle里面,添加如下代码:

apply from: 'maven_upload.gradle'

2、在library工程下面新建gradle.properties(如果没有的话),添加如下代码:

#######################Maven上传参数############################
MAVEN_VERSION=0.0.1-SNAPSHOT
MAVEN_GROUP_ID=your group id
MAVEN_ARTIFACT_ID=your artifact id
MAVEN_PACKAGING=aar
MAVEN_DESCRIPTION=your description
 
MAVEN_RELEASE_URL=http://your maven ip and port/repository/maven-releases/
MAVEN_SNAPSHOT_URL=http://your maven ip and port/repository/maven-snapshots/
 
MAVEN_NAME=your maven name
MAVEN_PASSWORD=your maven password

注:

(1) Could not find metadata your group id:your artifact id/maven-metadata.xml in remote (http://your maven ip and port/repository/maven-releases/)

如果有这样的提示,可以暂时不予理会。

(2) MAVEN_VERSION:如果是SNAPSHOT版本,需要在版本号后面添加"-SNAPSHOT"。

MAVEN_RELEASE_URL和MAVEN_SNAPSHOT_URL分别指向maven的release服务器和maven的snapshot服务器。
MAVEN_GROUP_ID和MAVEN_ARTIFACT_ID根据项目实际情况来设定。

 

3、在library工程下面新建maven_upload.gradle文件,内容如下:

apply plugin: 'maven'
apply plugin: 'signing'
 
configurations {
    deployerJars
}
 
repositories {
    mavenCentral()
}
 
// 判断版本是Release or Snapshots
def isReleaseBuild() {
    return !MAVEN_VERSION.contains("SNAPSHOT");
}
 
// 获取仓库url
def getRepositoryUrl() {
    return isReleaseBuild() ? MAVEN_RELEASE_URL : MAVEN_SNAPSHOT_URL;
}
 
uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment {
                MavenDeployment deployment -> signing.signPom(deployment)
            }
 
            pom.project {
                version MAVEN_VERSION
                groupId MAVEN_GROUP_ID
                artifactId MAVEN_ARTIFACT_ID
                packaging MAVEN_PACKAGING
                description MAVEN_DESCRIPTION
            }
 
            repository(url: getRepositoryUrl()) {
                authentication(userName: MAVEN_NAME, password: MAVEN_PASSWORD) // maven授权信息
            }
        }
    }
}
 
// 进行数字签名
signing {
    // 当 发布版本 & 存在"uploadArchives"任务时,才执行
    required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}

注:

(1) 上传到maven的RELEASE服务器按理来说需要用到签名机制,android studio自带的签名是gpg机制;

然而这个涉及到需要将公钥上传到maven服务器的事宜。

(2)组件上传的时候,注意要根据Build Variants的设置,只生成一个aar或jar文件,不要生成多个,比如带有debug或release标记的版本。切记!

单独上传

此方式包含只包含上传功能,即手动上传指定压缩包。
 

1、安装Maven客户端

具体安装方法不赘述,自行参考文章指引;

2、配置 maven上传脚本

在conf/settings.xml文件里,编辑上服务器的账号、密码信息,另外还有一个id,对应上传脚本中的-DrepositoryId字段。

示例:

 

<server>
<id>nexus-snapshots</id>
<username>账号</username>
<password>密码</password>
</server>

2、利用maven命令,上传指定文件

命令参考格式:

mvn deploy:deploy-file -e -Dfile=F:\a.aar -DgroupId=your group id -DartifactId=your artifact id -Dversion=0.0.1-SNAPSHOT -Durl=http://xxx/maven-snapshots/ -Dpackaging=aar -DrepositoryId=nexus-snapshots

 

单独上传有一个好处就是可以只上传现有的jar包或者aar包,无需工程及时编译重新打包。

有时候这个包是第三方提供的,如果可以通过maven管理起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值