首页 > 其他分享 >Android发布aar到Maven仓库

Android发布aar到Maven仓库

时间:2023-03-06 16:58:01浏览次数:33  
标签:maven http library Maven version aar Android com android

目录

一、配置步骤

方式一

在要发布的子模块的 build.gradle 文件中做如下配置:

  1. 添加 maven-publish 插件
plugins {
    id 'com.android.library'
    id 'maven-publish'
}
  1. 添加 publish 配置
groupId = 'com.example.android'
artifactId = 'demo'
version = '1.0.0'

// 发布源码
task sourcesJar(type: Jar){
    from android.sourceSets.main.java.srcDirs
    archiveClassifier.set("sources")
}

// 发布文档
task javadocJar(type: Jar){
    from android.sourceSets.main.java.srcDirs
    archiveClassifier.set("javadoc")
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                artifact sourcesJar
                artifact javadocJar
                groupId = groupId
                artifactId = artifactId
                version = version
            }
        }
        repositories {
            maven {
                def releaseRepoUrl = "http://192.168.1.110:8081/repository/maven-releases/"
                def snapshotsRepoUrl = "http://192.168.1.110:8081/repository/maven-snapshots/"
                url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releaseRepoUrl
                allowInsecureProtocol(true)
                credentials {
                    username = "admin"
                    password = "admin123"
                }
            }
        }
    }
}

方式二(推荐)

  1. 复制上传模板到项目根目录。

  2. 修改模板中的group(可选)

  3. 修改模板中的仓库地址(可选)

  4. 子模块中的 build.gradle 添加 maven-publish 插件

    plugins {
    	id 'com.android.library'
    	id 'maven-publish'
    }
    
  5. 添加版本号
    version = '1.0.0'

  6. 引入模板
    apply from: '../uploadArchive.gradle'

二、引用私有仓库的依赖

根目录中的 settings.gradle 添加 maven私有仓库地址

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven {
            url 'http://192.168.1.XXX:8181/repository/maven-releases/'
            allowInsecureProtocol(true)
        }
        google()
        mavenCentral()
    }
}

项目中的 build.gradle 添加引用依赖

dependencies {
    ...
    implementation 'com.alibaba:fastjson:2.0.22'
}

三、方式一完整配置示例

//apply plugin: 'maven-publish'
plugins {
    id "maven-publish"
}

groupId = 'com.example.android'
artifactId = 'demo'
version = '1.0.0'

// 发布源码
task sourcesJar(type: Jar){
    from android.sourceSets.main.java.srcDirs
    archiveClassifier.set("sources")
}

// 发布文档
task javadocJar(type: Jar){
    from android.sourceSets.main.java.srcDirs
    archiveClassifier.set("javadoc")
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                artifact sourcesJar
                artifact javadocJar
                groupId = groupId
                artifactId = artifactId
                version = version
                pom {
                    name = 'My Library'
                    description = 'A concise description of my library'
                    url = 'http://www.example.com/library'
                    properties = [
                        myProp: "value",
                        "prop.with.dots": "anotherValue"
                    ]
                    licenses {
                        license {
                            name = 'The Apache License, Version 2.0'
                            url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }
                    developers {
                        developer {
                            id = 'dev'
                            name = 'developer'
                            email = '[email protected]'
                        }
                    }
                    scm {
                        connection = 'scm:git:git://example.com/my-library.git'
                        developerConnection = 'scm:git:ssh://example.com/my-library.git'
                        url = 'http://example.com/my-library/'
                    }
                }
            }
        }
        repositories {
            maven {
                def releaseRepoUrl = "http://192.168.1.XXX:8181/repository/maven-releases/"
                def snapshotsRepoUrl = "http://192.168.1.XXX:8181/repository/maven-snapshots/"
                url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releaseRepoUrl
                allowInsecureProtocol(true)
                credentials {
                    username = "admin"
                    password = "admin123"
                }
            }
        }
    }
}

附录

uploadArchive.gradle 源码:

group = "com.example.android"
def releaseRepoUrl = "http://192.168.1.XXX:8181/repository/maven-releases/"
def snapshotsRepoUrl = "http://192.168.1.XXX:8181/repository/maven-snapshots/"

// 发布源码
task sourcesJar(type: Jar){
    from android.sourceSets.main.java.srcDirs
    archiveClassifier.set("sources")
}

// 发布文档
task javadocJar(type: Jar){
    from android.sourceSets.main.java.srcDirs
    archiveClassifier.set("javadoc")
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                groupId = group
                artifactId = project.name
                version = version
                pom {
                    name = project.name
                    description = 'Android SDK Library'
                    url = 'http://www.myandroid.com/library'
                }
            }
        }
        repositories {
            maven {
                url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releaseRepoUrl
                allowInsecureProtocol(true)
                credentials {
                    username = "admin"
                    password = "admin123"
                }
            }
        }
    }
}

标签:maven,http,library,Maven,version,aar,Android,com,android
From: https://www.cnblogs.com/silfox/p/17184455.html

相关文章

  • android 访问域名接口报错
    1.移动端访问https域名及接口,显示java.net.UnknownHostException:Unabletoresolvehost"xxx":Noaddressassociatedwithhostname2.使用okhttp访问的接口,......
  • 【Android逆向】反调试绕过(nop 绕过)
    1.这是看雪上的一个题目,要求显示出itissuccesshttps://www.kanxue.com/work-task_read-800648.htm第三题2.apk安装到手机,发现闪退3.apk拖入到jadx中,观察public......
  • android | 静态注册广播接收器的坑
    android|静态注册广播接收器的坑按书上写的并不能正常接收,查了一下是这个原因:反正就是要加上包名类名,有点离谱哦。具体如下: btn.setOnClickListener(newView.OnCli......
  • Android--aar打包
    文章目录一、aar包和jar包二、打aar包1.Module中不含有其它aar2.Module中嵌套第三方aar3.fat-aar-android的简单用法一、aar包和jar包Android中常见的第三方库包括:.so、.ja......
  • 【android】MediaRecorder录音录像
    前言Android除了支持播放多媒体文件之外,还可以从对应的硬件中捕获多媒体,比如从麦克风录音、从摄像头录像等。本篇博客讲解一下Android下如何通过MediaRecorder进行录......
  • 【android】通过 PackageManager 获得你想要的 App 信息
    一、前言开门见山,开篇明义。有些场景下,我们会需要获取一些其它App的各项信息,例如:App名称,包名、Icon等。这个时候就需要使用到PackageManager这个类了。本篇就Pack......
  • Android 查询远程服务器的工具QueryUtils
    /***查询远程服务器的工具*@authorchen.lin**/publicclassQueryUtils{privatestaticfinalStringTAG="CommonUtils";privatestaticQueryUtilsins......
  • Android intent跳转工具类
    /***进行页面跳转的工具**@authorchen.lin**/publicclassIntentUtil{privatestaticfinalStringIMAGE_TYPE="image/*";privatestaticfinalStr......
  • Maven链接数据库(3.6)
     报错应该是Usermapper中查询语句错误 链接数据库之后的数据库语句放在mapper文件夹下的UserMapper中 右键com.baidu.pojo→new→package→命名com.baidu.util(前缀......
  • 说一下在写Android APP时遇到的具体问题
    问题一:总是显示出nosuchtable错误不要担心这个问题(该担心还是得担心一下的哈),以我出错多次的经验来看,只需要在运行APP之后,回到虚拟机的主界面,然后找到相应的APP虚拟软件,......