电子说
使用as创建一个新的项目,在新建项目下创建一个lib库,命名为:lib_vedio:并在lib_vedio
的build.gradle
工程文件下面,引入maven
库:
实现uploadArchives
的task方法:这个方法用于上传lib库:
plugins {
id 'com.android.library'
id 'maven'
}
//上传的类库名称
def _artifactId = this.getName()
//类库版本
def pomVersionName = '1.0.1'
def pomName = this.getName()
//类库描述
def pomDescription = 'the vedio library for all project'
uploadArchives {
repositories {
mavenDeployer {
repository(url:NEXUS_REPOSITORY_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
name pomName
version pomVersionName
description pomDescription
artifactId _artifactId
groupId POM_GROUPID
packaging POM_PACKAGING
}
}
}
}
里面一些变量是在gradle.properties中设置的全局变量:
NEXUS_REPOSITORY_URL=http://localhost:8081/repository/anna_release/
POM_GROUPID=com.anna.android
POM_PACKAGING=aar
NEXUS_USERNAME=admin
NEXUS_PASSWORD=admin123456
设置好后,执行uploadArchives
任务,这个时候我们本地的lib_vedio
库就会上传到我们之前搭建的maven
私服上:
这里因为我们上传了两个版本1.0.0和1.0.1
切记:
如果当前仓库选择的是release属性:则每次上传的版本不能一致,需要在原版本基础上增加
如果选择的是snapshot属性:则可以在不增加版本号的前提下,修改同一版本的代码并上传。
我们在项目的build.gradle
文件中引入maven库:
buildscript {
repositories {
google()
jcenter()
maven {
url = 'http://localhost:8081/repository/anna_release/'
credentials {
username = 'admin'
password = 'admin123456'
}
}
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven {
url = 'http://localhost:8081/repository/anna_release/'
credentials {
username = 'admin'
password = 'admin123456'
}
}
}
}
并在app模块引入lib库文件:
implementation 'com.anna.android:lib_video:1.0.1'
这样就可以在我们项目中愉快使用类库啦。
如果我们需要开源我们的代码就需要将仓库发布到公共仓库中:
项目级build.gradle
中设置buildscript {
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
}
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
模块级build.gradle
设置如下apply plugin: 'com.github.dcendents.android-maven'
group = 'com.github.xxx' // xxx为github 的用户名
push
到github
上Release Tag
release tag.png
look up
jitpack.png
然后会显示出对应的编译版本信息:
红色代表编译失败
蓝色代表编译成功
可通过日志查看编译错误原因:
编译失败信息.png
项目级 build.gradle
声明远程仓库,在模块级 build.gradle
中依赖类库。项目级build.gradle
buildscript {
repositories {
...
maven { url 'https://jitpack.io' }
}
dependencies {
...
classpath 'com.github.ByteYuhb.a_gradle_plugin_sample:uploadversion:1.0.3'
}
}
这里我们上传的是一个gradle插件库,所以需要在buildscript中的dependencies声明插件版本信息
关于Gradle自定义插件的编写可以参考这篇文章:
Gradle筑基篇(五)-Gradle自定义插件实战
模块级build.gradle
apply plugin: 'com.yuhb.upload'
versionInfo {
versionName = '1.0.0'
versionCode = 1
versionUpdateInfo = '当前是第一个版本:初始apk'
}
引入插件的group和扩展信息
结果
:
在编译期:打印出了Gradle插件中的信息:
Task :app:uploadTask
name:1.0.0 code:1 info:当前是第一个版本:初始apk
使用新版 Maven 插件
,可以直接以指定二进制文件的方式发布组件。例如:
apply plugin: 'maven-publish'
publishing {
publications {
[任务名](MavenPublication) {
groupId MAVEN_GROUP_ID
artifactId MAVEN_ARTIFACTID
version MAVEN_VERSION
artifact([文件路径])
}
}
repositories {
maven {
// 发布仓库路径
url MAVEN_RELEASE_URL
}
}
}
全部0条评论
快来发表一下你的评论吧 !