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

时间:2018-08-10 13:17:14

标签: android maven jar bintray jcenter

我通过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

enter image description here

1 个答案:

答案 0 :(得分:7)

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

  

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资源,例如字符串,可绘制对象,布局文件,主题,样式元素等。

有关详细信息,请参见here

3。 library name>-javadoc.jar

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

这只是一个存档,不是可执行文件。您可以使用Total Commander或WinRar打开它并检查其内容。

4。 library name>-sources.jar

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

它包含您的实际*.java*.kotlin文件,并带有注释。拥有此文件后,您的库的客户就可以正确地查看您的代码,逐行浏览它,并更好地了解您的代码做什么。

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

如果您的库不是开源的并且具有专有代码,请小心:也不要发布源代码!

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

这是Bintray为保证 生成的文件,您是上载该文件的人。这就是为什么您的所有文件还具有*.asc corespondent的原因。

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

  

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

*.pom

由于您提到了bintrayUpload任务,因此我认为您正在使用Bintray Gradle插件。

在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在您上传文件后 生成的。无需在本地生成它们。

希望这会有所帮助!