特别说明:该文档以AndroidStudio为编译器,maven私有仓库搭建完成进行描述
第一步:创建库项目
1,File—>New—>NewProject 创建一个Android项目
2,在当前项目上右键New—>Module—>Android Library 创建生成aar需要的library
第二步:编写生产aar脚本
1,需要重命名或者移动aar位置,需要编写task
(1),脚本编写位置:library下的build.gradle
(2),脚本实例如下:
//生成aar的Task
task makeAar(type: Copy) {
//默认aar生成的位置
from('build/outputs/aar/')
//把aar移动到指定位置
into('build/libs/')
//aar默认生成名字为库library名称-release.aar
include('mingonghui-library-release.aar')
String buildNumber = getHudSonBuild()
//重命名
rename('mingonghui-library-release.aar', "mingonghui-library-
release-${android.defaultConfig.versionName}.${buildNumber}.aar")
}
//生成aar脚本执行
makeAar.dependsOn(build)
//上传maven的脚本地址
apply from:"../maven_android_push.gradle"
2,直接命令生成aar
在命令窗口,如下命令,即可生成aar,aar位置在library/build/outputs/aar/下面
gradlew -b build.gradle clean
gradlew -b ./library/build.gradle build
第三步:上传maven脚本
1,脚本实例代码
// 一个可以让你把库上传到maven仓库的插件
apply plugin: 'maven'
// 声明变量记录maven库地址
def mavenRepositoryUrl
def versionName;
// NEXUS_USERNAME等变量在我们主项目的gradle.properties中可以找到
def getRepositoryUsername() {
return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
afterEvaluate { project ->
// 我们声明我们要执行的上传到maven的task
uploadArchives {
repositories {
mavenDeployer {
if (project.hasProperty("publishtype")) {
println publishtype;
if (publishtype == "release") {
mavenRepositoryUrl =
"http://mvn.gemantic.com/content/repositories/releases/"
versionName = VERSION_NAME;
} else {
mavenRepositoryUrl =
"http://mvn.gemantic.com/content/repositories/snapshots/"
versionName = VERSION_NAME + "-SNAPSHOT";
}
}
// 我们类比下compile com.squareup.okhttp:okhttp:2.7.0
// groupId 对应com.squareup.okhttp; artifactId 对应okhttp;version对应2.7.0
// 这样就类似坐标的方式定位到了制定的库文件
pom.artifactId = POM_ARTIFACT_ID
pom.groupId = POM_GROUP_ID
pom.version = versionName
// 授权验证,这里也就是你登陆搭建的私服服务器时候的用户名\密码
repository(url: mavenRepositoryUrl) {
authentication(userName: getRepositoryUsername(),
password:getRepositoryPassword())
}
// 这里是配置我们maven库需要的pom.xml文件的各个内容,具体意思我们在主目录
// gradle.properties中解释
pom.project {
name POM_NAME
packaging POM_PACKAGING
}
}
}
}
}
2,gradle.properties定义的相关常量及注释
# 私有仓库账号
NEXUS_USERNAME=admin
# 私有仓库密码
NEXUS_PASSWORD=123456
# 在POM文件中使用的group ID
POM_GROUP_ID=com.rxhui.library
# 库名称
POM_NAME=android-rxhui-scan-lib
# artifactId
POM_ARTIFACT_ID=scan-lib
# 库的打包格式为aar, 常见的还有jar
POM_PACKAGING=aar
# 库的描述,说明他是干啥的
POM_DESCRIPTION=库文件
第四步:上传命令
1,如果打包在jenkins进行工具打包,需要在jenkins配置如下命令
./gradlew -b build.gradle clean
./gradlew -b build.gradle makeAar
./gradlew -b build.gradle uploadArchives -Ppublishtype=release
2,可以在当前项目命令窗口下,直接运行
gradlew -b build.gradle clean
#如果第二步操作是在build.gradlel里面构建的task,就直接运行如下命令
gradlew -b build.gradle makeAar
gradlew -b build.gradle uploadArchives -Ppublishtype=release
其他:私有仓库创建
网上有很多相关帖子,参考示例:
https://www.cnblogs.com/avivaye/p/5345207.html