美文网首页
将Module发布到Maven仓库

将Module发布到Maven仓库

作者: xiny1024 | 来源:发表于2017-09-30 19:42 被阅读0次

发布到私有Maven仓库

详细教程:http://blog.csdn.net/H_Zhang/article/details/51558800

初衷:因多个项目使用同一个Module,每当需要修改Module时代价太大,所以讲Module上传时私有Maven仓库进行统一维护。

我们使用Nexus在本地搭建了一个Maven仓库。
启动Nexus,在浏览器输入:http://localhost:8081/nexus/ 即可看到Maven仓库管理界面。

在Module中新建一个nexus-push.gradle,内容如下

apply plugin: 'maven'

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    failOnError false// 忽略错误配置
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}

task javadoc(type: Javadoc) {
    options.encoding "UTF-8"
    options.charSet 'UTF-8'
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
    }
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/nexus/content/repositories/releases/") {
                authentication(userName: "xxx", password: "xxx")// maven仓库的账号及密码
            }

            // 发布到maven的相关信息
            pom.groupId = 'com.mit.android'// 项目包名
            pom.artifactId = 'xlib'// 库名
            pom.version = '0.0.1'// 版本号

            pom.project {
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
            }
        }
    }
}

然后在Module的build.gradle的最后添加如下代码:

apply from: './nexus-push.gradle'

OK, 脚本编写完之后,在Android Studio的Terminal面板执行如下命令

gradlew uploadArchives

发布成功后就可以在nexus查看已发布的项目

接下来,我们在项目中引用这个maven仓库的aar包
首先在项目根目录下的build.gradle文件添加仓库url地址。

build.gradle

allprojects {
    repositories {
        jcenter()

        maven {
            url "http://localhost:8081/nexus/content/repositories/releases/"
        }
    }
}

接下来在app的build.gradle中添加依赖即可使用。

app/build.gradle

compile 'com.mit.android.xlib:xlibrary:0.0.1'

遇到的各种坑以及解决办法

坑一:错误: 编码GBK的不可映射字符->请正确配置javadoc编码

task javadoc(type: Javadoc) {
    options.encoding "UTF-8"
    options.charSet 'UTF-8'
}

坑二:错误: 不允许使用自关闭元素->请删除javadoc注释里面所有的含有html标签
坑三: 错误: 程序包android.support.v7.widget不存在;错误: 找不到符号 ->在javadoc中加入忽略错误配置

task javadoc(type: Javadoc) {
      failOnError false
  }

坑四:Could not create version ‘0.1’: HTTP/1.1 401 Unauthorized [message:This resource requires authentication],->没有配置正确的Maven Key

相关文章

网友评论

      本文标题:将Module发布到Maven仓库

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