Gradle私服上传自己的库项目

Posted 宿罪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle私服上传自己的库项目相关的知识,希望对你有一定的参考价值。

Nexus安装配置

开始搭建我们的私服前,我们需要先安装配置我们的nexus服务器。

  • 下载地址:https://www.sonatype.com/download-oss-sonatype

  • 安装:

    • 管理员身份运行cmd,进入nexus bin目录,nexus /install nexus
    • nexus /run(之前版本用bat启动,nexus start启动)
  • 修改配置(etc目录nexus-default.properties)如:

    修改主机地址和端口地址:

      	## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
      ##
      # Jetty section
      application-port=8081
      application-host=127.0.0.1
      nexus-args=$jetty.etc/jetty.xml,$jetty.etc/jetty-http.xml,$jetty.etc/jetty-requestlog.xml
      nexus-context-path=/
      
      # Nexus section
      nexus-edition=nexus-pro-edition
      nexus-features=\\
       nexus-pro-feature
    
  • 访问地址:127.0.0.1:8081

    • 用户名(default):admin
    • 密码(default):admin123
  • 登录后找到设置,点击Create Repository -> maven2(hosted) ->

创建好我们的releases和snapshot仓库后回到我们仓库列表,点击maven-public,将我们创建的两个仓库加入到这个group中

编写gradle task上传我们的项目


apply plugin: 'com.android.library'
apply plugin: 'maven'

version rootProject.ext.maven.version
group rootProject.ext.maven.group

uploadArchives 
    repositories 
        mavenDeployer 
            repository(url:rootProject.ext.maven.releasesUrl)
                authentication(userName: rootProject.ext.maven.userName, password: rootProject.ext.maven.password)
            
            snapshotRepository(url:rootProject.ext.maven.snapshotUrl)
                authentication(userName: rootProject.ext.maven.userName, password: rootProject.ext.maven.password)
            
            pom.artifactId = "demo" // 仓库名
            pom.packaging = 'aar' // 打包成aar
        
    

  • repository:我们项目的releases仓库
  • snapshotRepository:我们项目的快照仓库

这里用到了project对象的ext属性,可以将一些配置信息抽取出来,如:

config.gradle

ext 
    maven = [
        userName : 'admin',
        password : 'admin123',
        releasesUrl : 'http://127.0.0.1:8081/repository/demo-releases/',
        snapshotUrl : 'http://127.0.0.1:8081/repository/demo-releases/',
        version : '1.0.0',
        group : 'com.simple.sdk'
    ]
 

要让ext属性生效,我们需要在我们的根项目将这个gradle脚本引入进来

apply from: 'config.gradle'

在项目目录打开命令行执行gradlew uploadArchives或者打开as的gradle视图双击uploadArchives执行这个task即可将我们的库项目发布到我们的nexus服务器上。

像引用其他第三方库(如okhttp)一样在其他的项目中引用我们的库项目

  1. 需要将我们根项目的build.gradle中配置我们库项目的maven仓库地址
maven 
    url "$rootProject.ext.maven.releasesUrl"

  1. 添加依赖
implementation 'com.simple.sdk:demo:1.0.0'
注:com.simple.sdk:demo:1.0.0'  =  group + :+artifactId + : + version

自此我们项目私服就搭建完了,如果下次我们的sdk有更新,那么我们只需要将version的版本号做相应的提升重新上传并修改我们项目依赖的版本号即可。这样我们就可以在局域网内和我们的小伙伴一起共享我们的库项目了,但这仅限局域网,如果需要在外网,我们就想我们的项目发布到外网maven服务器上。

以上是关于Gradle私服上传自己的库项目的主要内容,如果未能解决你的问题,请参考以下文章

Gradle Upload上传maven私服异常问题——Gradle构建maven仓库报400错误

Gradle Upload上传maven私服异常问题——Gradle构建maven仓库报400错误

Gradle Upload上传maven私服异常问题——Gradle构建maven仓库报400错误

Gradle Upload上传maven私服异常问题——Gradle构建maven仓库报400错误

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ⑦ ( 登录 Maven 私服 | Maven 私服初始化设置 | 创建 Maven 仓库 )

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ⑥ ( 配置 Sonatype Nexus 搭建的 Maven 私服 | 配置端口号 | 配置JVM )