美文网首页
Maven(一)——上传android lib

Maven(一)——上传android lib

作者: 王志强_9380 | 来源:发表于2020-12-28 15:37 被阅读0次

    网上大部分的上传文件都是只能上传android lib的,java lib会报错,下面的主要解决这个问题

    创建一个文件maven_upload.gradle
    如果你只有一个库需要上传,那你可以在库的目录下
    如果你有很多库要上传,那么建议你放在项目根目录

    apply plugin: 'maven'
    
    def isReleaseBuild() {
        return VERSION_NAME.toUpperCase().contains("SNAPSHOT") == false
    }
    def getRepositoryUsername() {
        return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
    }
    def getRepositoryPassword() {
        return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
    }
    def getRepositoryUrl() {
        return isReleaseBuild() ? RELEASE_REPOSITORY_URL : SNAPSHOT_REPOSITORY_URL
    }
    afterEvaluate { project ->
        uploadArchives {
            repositories {
                mavenDeployer {
                    pom.groupId = GROUP
                    pom.artifactId = POM_ARTIFACT_ID
                    pom.version = VERSION_NAME
                    repository(url: getRepositoryUrl()) {
                        authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                    }
                }
            }
        }
    
        if (project.getPlugins().hasPlugin('com.android.application') ||
                project.getPlugins().hasPlugin('com.android.library')) {
            task androidJavadocs(type: Javadoc) {
                source = android.sourceSets.main.java.srcDirs
                classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
            }
            task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
                classifier = 'javadoc'
                from androidJavadocs.destinationDir
            }
            task androidSourcesJar(type: Jar) {
                classifier = 'sources'
                from android.sourceSets.main.java.sourceFiles
            }
        }else{
            task sourcesJar(type: Jar, dependsOn:classes) {
                classifier = 'sources'
                from sourceSets.main.allSource
            }
    
            task javadocJar(type: Jar, dependsOn:javadoc) {
                classifier = 'javadoc'
                from javadoc.destinationDir
            }
        }
    
        //解决 JavaDoc 中文注释生成失败的问题
        tasks.withType(Javadoc) {
            options.addStringOption('Xdoclint:none', '-quiet')
            options.addStringOption('encoding', 'UTF-8')
            options.addStringOption('charSet', 'UTF-8')
        }
    
        artifacts {
            if (project.getPlugins().hasPlugin('com.android.application') ||
                    project.getPlugins().hasPlugin('com.android.library')) {
                archives androidSourcesJar
                archives androidJavadocsJar
            } else {
                archives sourcesJar
                archives javadocJar
            }
        }
    }
    

    然后就是填参数,参数一般写在gradle.properties中,如果你的项目的lib都是不相关的,那么你可以在你的lib目录中写gradle.properties。如果你想把一系列的lib打包成一个库,那么最好在项目根目录中写gradle.properties
    比如

    //上传构件的信息,一般是包名,例如:com.jakewharton
    GROUP=com.XXXXX
    
    //上传的目标仓库地址,一般不改
    SNAPSHOT_REPOSITORY_URL=XXXXX
    RELEASE_REPOSITORY_URL=XXXXX
    
    //Nexus的私服的用户名称和密码,一般不改
    NEXUS_USERNAME=XXXXX
    NEXUS_PASSWORD=XXXXX
    

    然后在lib库中定义版本和id

    //正式版只能迭代不能覆盖,测试版用-SNAPSHOT结尾(这是硬性规定,否则无法上传成功)
    VERSION_NAME=1.0.0-SNAPSHOT
    
    //例如:butterknife-runtime
    POM_ARTIFACT_ID=XXXXX
    

    然后就可以在右边的gradle中,找到lib库——>Tasks——>upload——>uploadArchives
    愉快的上传到了maven库

    相关文章

      网友评论

          本文标题:Maven(一)——上传android lib

          本文链接:https://www.haomeiwen.com/subject/bfxtoktx.html