nexus maven私服发布Android library

感谢我的同事提供的这篇总结原文:http://www.jianshu.com/p/603fbce7056c

搭建私服:http://www.oschina.net/question/698806_159372

为了方便的管理、发布、更新我们安卓端的公共库,我考虑通过Android studio 发布公共库到公司已有的mavne私服来管理。
参考maven文档及网上一些参考文档,简单的整理如下

 

创建公共库

  • 新建一个项目,然后添加一个需要做为公共库的Module。
  • 在这个module的build.gradle中添加代码:

    apply plugin: 'maven'
     
    def getRepositoryUsername() {    
            return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
    }
        def getRepositoryPassword() {    
            return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
    }
      afterEvaluate {project ->    
            uploadArchives {
                  repositories {
                      mavenDeployer {
                          pom.groupId = GROUP
                          pom.artifactId = POM_ARTIFACT_ID        
                          pom.version = VERSION_NAME                
                          repository(url:"http://ip/nexus/content/repositories/com.jjshome.mobile") {
                          authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) 
                 }            
              }        
           }   
      }    
      task androidSourcesJar(type: Jar) {
          classifier = 'sources'        
         from android.sourceSets.main.java.sourceFiles    
      }    
      artifacts {        
         archives androidSourcesJar    
     }
    }

    这里的URL没有使用 releases的repositories(一般为http://ip/nexus/content/repositories/releases/ ), 而是自定义了一个MobileRepository,是因为上传releases的地址gradle报无法连接的错误,想来是私服有人设置了权限吧。如果哪位服务端大神配置的nexus maven,看到这篇文章告诉我真正的原因。

    
    
  • 在这个module下添加配置文件gradle.properties,添加些属性

     

    #对应maven的groupId值
    GROUP=com.jjshome.mobile
    #对应maven的version值
    VERSION_NAME=0.0.3
    #对应maven的artifactId值
    POM_ARTIFACT_ID=jjs-utils
    #登录nexus oss的用户名
    NEXUS_USERNAME=admin
    #登录nexus oss的密码
    NEXUS_PASSWORD=admin123


  • 运行上传任务
     

    项目中引入公共库

  • 在项目的顶层build.gradle添加私服地址
    allprojects {
      repositories {
          jcenter()        
          maven {
                 url "http://ip/nexus/content/groups/public/" 
          }
      }
    }
  • 在需要引用的modle中的build.gradle添加library
     
    dependencies {    
         compile 'com.jjshome.mobile:jjs-utils:0.0.3'   
    }
    
    

    配置中遇到的问题

    
    
  • 在maven私服中需要把自己的repositories添加到Public Repositories 的Ordered Group Repositories中
  • 在编译上传自定义的库时注意编译的sdk版本,和最低支持的sdk版本。如果引用的项目中compileSdkVersion的版本比自定义库中的低,minSdkVersion的版本比自定义的高,那么会编译失败。
    最好是自定义的库支持的minSdkVersion要比较低,compileSdkVersion、targetSdkVersion也比较低。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值