代碼庫上傳遠程倉庫利器(maven-pubish/maven)

代碼庫上傳遠程倉庫利器(maven-pubish/maven)

maven-publish(推薦)

  • 如果想把代碼發佈到私有倉庫或公有倉庫,那麼可以利用maven-publish這個工具非常方便地進行上傳
  • maven-publish官方文檔:https://docs.gradle.org/current/userguide/publishing_maven.html

實踐參考

  • 以idea工具爲例
  • 參考配置如下(gradle5.6)
    plugins {
        id 'java-library'
        id 'maven-publish'
    }
    
    repositories {
        mavenLocal()
        maven {
            url = 'http://repo.maven.apache.org/maven2'
        }
    }
    
    dependencies {
        compile 'org.apache.httpcomponents:httpclient:4.5.3'
        compile 'org.slf4j:slf4j-api:1.7.21'
        compile 'org.slf4j:slf4j-simple:1.7.21'
    }
    
    group = 'com.github.wxpay'
    version = '3.0.9'
    description = 'wxpay-sdk'
    sourceCompatibility = '1.8'
    
    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }
    // 源碼
    task sourcesJar(type: Jar) {
        from sourceSets.main.allJava
        archiveClassifier = 'sources'
    }
    // javadoc
    task javadocJar(type: Jar) {
        from javadoc
        archiveClassifier = 'javadoc'
    }
    
    publishing {
        publications {
            mavenJava(MavenPublication) {
                artifactId = 'wxpay-sdk'
                from(components.java)
                artifact sourcesJar
                artifact javadocJar
            }
        }
        repositories {
            maven {
                url = '你的倉庫地址'
                credentials {
                    username '倉庫賬號'
                    password '倉庫密碼'
                }
            }
        }
    }
    javadoc {
        if(JavaVersion.current().isJava9Compatible()) {
            options.addBooleanOption('html5', true)
        }
        // 編碼最好都統一爲utf-8
        options{
            encoding "UTF-8"
            charSet 'UTF-8'
            author true
            version true
        }
    
    }
    
  • 之後在根目錄下執行一下命令 gradlew publishMavenJavaPublicationToMavenRepository
  • 以上特別注意編碼的設置,否則可能出現編碼GBK的不可映射字符的錯誤,如果設置後還是出現同樣的錯誤,那麼請檢查下idea的文件配置
    在這裏插入圖片描述
  • 如果不需要生成javadoc或者源碼,直接把相關配置去掉即可

maven(舊插件)

  • maven可用於庫的發佈
  • 官方介紹: https://docs.gradle.org/current/userguide/maven_plugin.html#header

實踐參考

  • 本例以發佈android庫爲例

  • 在庫的build.gradle同級目錄下創建文件maven.gradle

    apply plugin: 'maven'
    
    // 指定編碼
    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }
    // 打包源碼
    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.srcDirs
    }
    
    artifacts {
        archives androidSourcesJar
    }
    
    afterEvaluate { project ->
    
        uploadArchives {
            repositories {
                mavenDeployer {
                    //遠程倉庫的地址
                    repository(url: "倉庫地址") {
                        //nexus登錄的用戶名和密碼
                        authentication(userName: "admin", password: "admin")
                    }
    
                    pom.project {
                        //項目引用設置
                        groupId 'com.gosuncn.util'
                        artifactId 'glog'
                        version '1.0.1'
                        packaging 'aar'//打包的格式
                    }
                }
            }
    
        }
    
    }
    
    
  • 之後在要發佈的庫的目錄下的build.gradle中引入

    apply from: './maven.gradle'
    ...
    
  • 最後在工程根目錄下執行任務gradlew uploadArchives即可上傳到遠程倉庫

maven和maven-publish的關係

  • 實際上maven-publish是maven的升級版,官方也是推薦使用maven-publish,但由於maven出現早,因此大部分文章都是以maven做介紹,不管哪個,只要夠用就好

參考

如何將Android studio中Library發佈到私服Nexus倉庫 - 簡書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章