Maven(一)——上传android lib

网上大部分的上传文件都是只能上传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)