Nexus搭建本地Maven倉庫

Nexus搭建本地Maven倉庫

1、共享利器,利人利己

  在團隊協作開發中,每個程序員都有自己的模塊開發維護,其中有很多共用的代碼不需要每個程序員都編寫一遍。這就可以把公用的代碼模塊抽離出來,
並形成可依賴使用的jar或者aar。這樣既能提高效率,也有利於代碼維護,形成快速開發的利器。本文就是總結開發中,搭建私有的maven倉庫的過程與使用。

2、Nexus的下載與安裝

  具體詳情,請查看上一篇博文Nexus 3.x的使用

3、Nexus的倉庫目錄與路徑

在這裏插入圖片描述

3.1、倉庫的類型

hosted

  本地倉庫,通常用於提交本地開發的庫

proxy

  代理倉庫,如果本地倉庫中沒有資源,就會從遠程倉庫(比如maven)中拉取。

group

  倉庫組,用來合併多個hosted/proxy倉庫

3.2、倉庫的路徑

URL

  點擊copy,就可以複製倉庫的路徑。
在這裏插入圖片描述

4、Library實例PermissionKit

  項目地址: https://github.com/ProgressiveDevelop/PermissionKit

5、配置Nexus上傳腳本 nexus_push.gradle

//引入插件
apply plugin: 'maven'
//編譯 Javadoc
task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
//編譯 xxx-javadoc.jar
task androidJavadocsJar(type: Jar) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}
//編譯 xxx-sources.jar
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}
artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}
uploadArchives {
    repositories {
        mavenDeployer {
            //配置發佈的倉庫與賬號、密碼
            repository(url: "http://127.0.0.1:8081/repository/maven-releases/") {
                authentication(userName: "admin", password: "admin123")
            }
            //指定id
            pom.artifactId = 'permissionkit'
            //指定版本
            pom.version = '1.0.0'
            pom.project {
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
            }
        }
    }
}

6、編譯

apply from: ‘./nexus-push.gradle’

  首先需要在library中的 build.gradle 最後引入 nexus-push.gradle(兩個文件在同一目錄下)。

命令行輸入:gradlew uploadArchives

  在Android studio底部的 Terminal 的窗口執行命令,出現如下圖,表示編譯成功。

在這裏插入圖片描述

  在Nexus管理後臺即可查看編譯的文件。

在這裏插入圖片描述

7、如何使用

7.1、引入倉庫

/*項目根 build.gradle 中配置倉庫*/
allprojects {
    repositories {
        google()
        jcenter()
        maven{
            url "http://127.0.0.1:8081/repository/maven-releases/"
        }
    }
}

7.2、項目module中 build.gradle中引入 jar包

 implementation 'PermissionKit:permissionkit:1.0.0@aar'

8、錯誤與解決

8.1、錯誤: 編碼GBK的不可映射字符

  原因:當Java源代碼中包含中文字符時,在用javac編譯時會出現“錯誤:編碼GBK的不可映射字符”。
由於JDK是國際版的,在用javac編譯時,編譯程序首先會獲取操作系統默認採用的編碼格式(GBK),然後JDK就把Java源文件
從GBK編碼格式轉換爲Java內部默認的Unicode格式放入內存中,然後javac把轉換後的Unicode格式的文件編譯成class類文
件,此時,class文件是Unicode編碼的,它暫存在內存中,JDK將此以Unicode格式編碼的class文件保存到操作系統中形成
最終的class文件。當不指定編碼方式就編譯時,相當於使用了參數:javac -encoding GBK xxx.java,此時就會出現不兼容的情況。
  解決:指定編碼方式。

發佈了32 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章