美文网首页
Java/Android发布library上传artifacts

Java/Android发布library上传artifacts

作者: CrazyOrr | 来源:发表于2020-03-03 13:44 被阅读0次

    必需artifacts

    在发布library到Maven repository时,通常情况下我们上传的artifacts包含:

    • 描述文件POM: artifactId-version.pom
    • aar/jar: artifactId-version.aar/jar

    示例如下:

    perfmonitor-0.1.1-20200114.075334-4.aar           14-Jan-2020 15:53  48.27 KB
    perfmonitor-0.1.1-20200114.075334-4.pom           14-Jan-2020 15:53  463 bytes
    

    有了这两者,其他人就可以通过GAV(Group, Artifact, Version)来定位并下载到我们的artifacts。

    可选artifacts

    除了上述的必需artifacts,我们还可以上传两个可选的artifacts:

    • javadoc jar包: artifactId-version-javadoc.jar,

      打包了library的Javadoc。
      只要按照规范命名,你发布到Maven CentralBintray (JCenter)的library的Javadoc就可以自动部署到比如javadoc.io这样的服务上。

    • sources jar包: artifactId-version-sources.jar

      打包了library的源码。
      只要按照规范命名,智能的IDE(比如IDEA/Android Studio)会自动帮我们下载并将.java文件与相应的.class文件关联。
      此时当我们在这些IDE中查看某个我们发布的library的类代码时,看到的就是.java文件而不再是.class文件,这样不仅方便阅读理解代码逻辑,而且可以直接进行断点调试。
      几乎所有开源项目的发布都会包含sources,比如Android本身。

    示例如下:

    perfmonitor-0.1.1-20200114.075334-4-javadoc.jar   14-Jan-2020 15:53  94.29 KB
    perfmonitor-0.1.1-20200114.075334-4-sources.jar   14-Jan-2020 15:53  23.93 KB
    

    另外,如果你的library要发布到Maven Central,那么这两个artifacts就是必需的。

    如何配置生成这两个artifacts

    Android Gradle pluginJava plugin有不同,使用了Kotlin后也会不同,这里只列出不使用Kotlin的Android的核心配置方法。

    创建tasks

    // sources
    tasks.register('sourcesJar', Jar) {
        archiveClassifier.set('sources')
        from android.sourceSets.main.java.sourceFiles
    }
        
    // javadoc
    tasks.register('androidJavadoc', Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }
    tasks.register('javadocJar', Jar) {
        dependsOn androidJavadoc
        archiveClassifier.set('javadoc')
        from androidJavadoc.destinationDir
    }
    

    在需要发布的artifacts中添加之前创建的tasks

    publishing {
        publications {
            releaseAar(MavenPublication) {
                // ... 原有artifact
                artifact sourcesJar
                artifact javadocJar
            }
        }
    }
    

    兼容Java/Android各种情况的配置请移步这里

    相关文章

      网友评论

          本文标题:Java/Android发布library上传artifacts

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