【问题标题】:What is the difference between Files uploaded to bintray.com?上传到 bintray.com 的文件有什么区别?
【发布时间】:2019-01-18 03:00:49
【问题描述】:

我通过 the tutorial 将我的库上传到 bintray.com,现在“文件”选项卡中存在文件列表。

1) 哪一个可以直接添加到app/libs文件夹中

2) 上传到 bintray.com 的文件有什么区别?

3) 如何在没有make命令gradlew bintrayUpload的情况下找到MyProject中的文件?

*-javadoc.jar 
*-javadoc.jar.asc 
*-sources.jar 
*-sources.jar.asc 
*.aar 
*.aar.asc 
*.pom 
*.pom.asc

【问题讨论】:

    标签: android maven jar bintray jcenter


    【解决方案1】:

    让我们一次一个地回答问题:

    1) 我可以将哪个直接添加到 app/libs 文件夹中

    那将是*.aar 文件。 .aar 文件包含您在库中定义的编译代码和其他资源(例如 XML 文件)。

    AAR 代表 Android 存档。它是 Android 新的库二进制格式,相当于 Java 世界中的 *.jar。 (见this

    不过,这仅包含已编译的代码。没有 javadoc,没有来源。

    2) 上传到 bintray.com 的文件有什么区别?

    让我们一个一个地处理每个文件:

    1。 <library name>.pom

    这是一个 XML 文件,用于存储有关您的图书馆的元数据。

    通常,它存储以下内容:

    • 您的工件的名称(例如mylibrary
    • 发布工件的组(即组织)(例如 com.myname.mycompany)
    • 库的版本(即 0.0.4)
    • packaging - 定义二进制文件的类型(aar Android 库,war 用于某些 Java 库等)
    • 库的一个或多个依赖项

    POM 文件只是 Maven 存储库的标准元数据文件。还有其他类型的存储库,例如Ivy repositories,它们对其元数据使用其他 XML 格式:Ivy.xml files

    由于您的存储库是 Maven 存储库,因此元数据存储在 -pom.xml 文件中。

    2。 <library name>.aar

    如上所述,它存储已编译的 Java/Kotkin 代码。还包含各种Android资源,如Strings、Drawables、Layout文件、主题、样式等。

    详情请见here

    3。 library name>-javadoc.jar

    存储使用javadoc 工具(或dokka,如果您使用 Kotlin)从您的代码生成的 HTML 文档文件。

    这只是一个存档,而不是可执行文件。你可以用 Total Commander 或 WinRar 打开它并查看它的内容。

    4。 library name>-sources.jar

    包含您的图书馆的来源。这又只是一个存档,而不是可执行文件。

    它包含您实际的 *.java*.kotlin 文件,并带有 cmets。有了这个文件,你的库的客户就可以正确地看到你的代码,逐行遍历它,并更好地理解你的代码做了什么。

    这也是当有人打开您的库的某个类的文档时 IDE 会读取的文件,以向您显示 IDE 中该类的文档。如果没有此文件,他们将不得不使用在线文档或查看来自<library-name>-javadoc.jar 的文件。

    如果你的库不是开源的并且有专有代码,请小心:不要同时发布源代码!

    5。 <library-name>.<extension>.asc

    这是由 Bintray 生成的文件,以保证您是上传该文件的人。这就是为什么您的所有文件都有一个*.asc 核心响应者。

    将其视为每个文件的数字签名。它实际上是由您链接的教程的“第 3 部分”中的步骤创建的。如果您跳过第 3 部分,则不会生成任何 `.asc 文件。

    3) 如何在不使用make命令gradlew bintrayUpload的情况下找到MyProject中的文件?

    *.pom

    我假设您使用的是 Bintray Gradle 插件,因为您提到了 bintrayUpload 任务。

    在你的 gradle 文件的某个地方,你应该有这样的东西:

    publishing {
        publications {
            MyPublicationName(MavenPublication) {
            ...
            }
        }
    }
    

    这定义了一个名为MyPublicationName的发布对象。

    感谢 Bintray Gradle 插件,您应该可以使用以下任务:generatePomFileForMyPublicationNamePublication

    所以要生成*.pom,你必须运行:

    ./gradle generatePomFileForMyPublicationNamePublication
    

    MyPublicationName 替换为您为出版物定义的名称。

    *.aar

    ./gradle :moduleName:assembleRelease
    

    只需将moduleName 替换为您的库模块的名称即可。

    *-sources.jar

    您需要定义一个将源文件归档到 jar 下的任务。我的看起来如下:

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

    然后你可以打电话:

    ./gradle :moduleName:sourcesJar
    

    和以前一样,将moduleName 替换为您的库模块的名称。

    *-javadoc.jar

    您通常需要为此定义 2 个任务:

    1. 一项任务在您的类上调用 javadoc 工具,以从您的代码中存在的文档生成 HTML 文档文件。
    2. 第二个任务获取 HTML 文件并将它们捆绑到 .jar 文件中(就像我们对 sources.jar 文件所做的那样)

    我的设置如下所示:

    //generates HTML files from the documentation present in your source files
    task javadoc(type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        failOnError false
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }
    
    //takes the generated html documentation files, and archives them in a jar
    task javadocJar(type: Jar, dependsOn: javadoc) {
        classifier = 'javadoc'
        from javadoc.destinationDir
    }
    

    然后调用:

    ./gradle :moduleName:javadocJar
    

    你准备好了!另外,将moduleName 替换为您的库模块的名称。

    *.asc

    这些文件实际上是由 Bintray您上传文件后生成的。无需在本地生成。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 2016-04-03
      • 2016-11-22
      • 2014-01-23
      • 2019-01-16
      • 1970-01-01
      相关资源
      最近更新 更多