1. 程式人生 > >Android 中打包成aar並上傳到Nexus搭建的maven倉庫

Android 中打包成aar並上傳到Nexus搭建的maven倉庫

目的

方便元件化流通,搭建私有庫有助於多人協作開發專案,提高整合的穩定性和庫引用版本的可控性,也減少繁瑣的第三方庫的釋出工作。

環境搭建

  1. 下載 安裝Nexus–>配置環境,啟動伺服器(請自行百度,本文略)

  2. 修改localhost為電腦的ip (方便在區域網上檢視)

製作aar

  1. 在Android Studio(AS)中新建module,寫測試的介面,供打包成aar,方便專案引用

    gradle.properties中的配置資訊:

#Maven倉庫的URL
MAVEN_REPO_RELEASE_URL=http://192.168.1.7:8081/repository/maven-releases/

MAVEN_REPO_SNAPSHOT_URL=http://192.168.1.7:8081/repository/maven-snapshots/

#對應maven的GroupId的值
GROUP = demo.yangjun.com
#登入nexus ossde的使用者名稱

NEXUS_USERNAME=admin
#登入nexus oss的密碼

NEXUS_PASSWORD=admin123

# groupid
GROUP_ID = testmaven

# type
TYPE = aar

# description
DESCRIPTION = This is LoginApi lib

#連結:https://www.jianshu.com/p/6954613c13ef

module中的build指令碼如下:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

apply plugin: 'maven'

android {
  compileSdkVersion 28


  defaultConfig {
    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

  }

  buildTypes {
    release {
      //是否混淆 注意混淆後有些api會被隱藏
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
  sourceSets {
    main {
      jniLibs.srcDirs = ['libs']
    }
  }

  lintOptions {
    abortOnError false
  }

}

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])

  implementation 'com.android.support:appcompat-v7:28.0.0'
  testImplementation 'junit:junit:4.12'
  androidTestImplementation 'com.android.support.test:runner:1.0.2'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

uploadArchives { //新增 ,因為Android Studio gradle 支援maven外掛,所以可以新增此task
  configuration = configurations.archives
  repositories {
    mavenDeployer {

      snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) {
        authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
      }

      repository(url: MAVEN_REPO_RELEASE_URL) {
        authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
      }

      pom.project {
        version '1.1.8' //版本名稱 上傳是不能和之前的一樣,否則上傳失敗
        artifactId GROUP_ID  //和前面網站上填寫的一樣
        groupId GROUP  //和前面網站上填寫的一樣
        packaging TYPE //填寫aar
        description DESCRIPTION //更新描述
      }
    }
  }
}

image-20181108161927250

之後找到AS中的gradle,執行該方法上傳到指定的maven地址。

maven伺服器的aar顯示情況:

image-20181108163511691

使用方法:

在專案中build.gradle(Module:app)新增

注意事項

aar版本號不要和之前伺服器的重複