当我们在使用第三方库的时候,过去我们是要从网上下载相关的jar包,放到项目的libs包下,引入到项目。但是当jar包更新后,我们还要到网上下载最新的jar包,更换旧的jar包。相当麻烦!
这样maven就出现了,他是一个全球的网络代码仓库,你可以将自己的代码上传到maven库中,也可以获取其他团队上传的maven库代码。
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建。
使用方法:
创建本地仓库:
A项目工具工程,B项目是业务工程。
第一步:首先我们需要在A项目将module库上传到maven仓库中,在moudle的gradle中添加:
apply plugin: 'maven'
group = '0.0.1-ml-SNAPSHOT' //项目组 SNAPSHOT 代表测试版本
version = '0.0.1' //版本号
uploadArchives {
repositories {
mavenDeployer {
//本地仓库地址
repository(url: uri('/Users/malei/Documents/mavenlocal'))
}
}
}
另外一种配置:
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('/Users/malei/Documents/mavenlocal'))
pom.version = "0.0.1-ml-SNAPSHOT"
pom.artifactId = "faceSdk"
pom.groupId = "com.ml.gz"
}
}
}
然后就可以上传到本地maven库了
第二步:然后我们下载本地仓库中faceSdk插件到B项目,首先需要在B项目的gradle中添加faceSdk的项目仓库空间地址:
allprojects - > repostories中
maven{url '/Users/malei/Documents/mavenlocal'}
这样环境配好了,就可以在app gradle中依赖该插件:
implementation 'com.ml.gz:faceSdk:0.0.1-ml-SNAPSHOT'
以上是上传到本地,同时我们也可以上传到远程服务器:
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://xxx/nexus/content/repositories/releases") {
authentication(userName: "nexus", password: "xxx")
}
snapshotRepository(url: "http://xxx/nexus/content/repositories/snapshots") {
authentication(userName: "nexus", password: "xxx")
}
pom.version = "0.0.1-ml-SNAPSHOT"
pom.artifactId = "faceSdk"
pom.groupId = "com.ml.gz"
}
}
}
遇到的问题:
1. 上传的module在gradle的release不可以添加混淆工作
2. 上传或者下载遇到网络异常,可以使用代理:
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'} maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }