概述
1.使用aar
2.使用仓库(也可以通过参数@aar只引用aar)
路径构成:http://*/{group}/{artifactId}/{version}
预设:库test依赖了rxjava2
上传到仓库
上传配置文件build.gradle
apply plugin: 'maven'
group = 'com.sparkrico'
artifacts {
archives file('test.aar')
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://*/repositories/releases/") {
authentication(userName: "username", password: "password")
}
pom.version = '1'
pom.artifactId = 'test'
}
}
}
http://*/com/sparkrico/test/1/
仓库目录详情
http://*/com/sparkrico/test/1/test-1.pom,可以看到依赖配置信息
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sparkrico</groupId>
<artifactId>test</artifactId>
<version>1</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>io.reactivex.rxjava2</groupId>
<artifactId>rxjava</artifactId>
<version>2.2.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>appcompat-v7</artifactId>
<version>26.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
结论:使用仓库引用包含了依赖关系,使用aar不包含依赖关系。
冲突处理,参数应用及验证
指定maven库 build.gradle
allprojects {
repositories {
mavenCentral()
jcenter()
maven { url "http://*/repositories/releases/"}
}
}
implementation "com.sparkrico:test:1"
引入aar的同时引入依赖RxJava
implementation "com.sparkrico:test:1@aar"
只引入aar不引入依赖RxJava
implementation("com.sparkrico:test:1@aar"){
transitive = true
}
引入aar的同时引入依赖RxJava
implementation("com.sparkrico:test:1"){
exclude module: 'rxjava'
}
排除指定依赖(引入库的同时不引入依赖RxJava)
依赖库有版本冲突时,默认使用高版本中的依赖(注意:是引用库的高版本中的依赖),如果项目中指定版本高于依赖中,优先用项目中指定的版本
如果想指定使用引入库中版本,使用force参数
a = 引用库依赖(高)>引用库依赖(低)
force = true 使用指定
引用> a 使用引用,否则使用a
implementation("com.sparkrico:test:1.0"){
force = true
}
implementation("com.sparkrico:test:1.1"){
}
全局强制使用指定版本库
configurations.all {
resolutionStrategy {
force 'org.hamcrest:hamcrest-core:1.3'
}
}
dependencies {
……
}