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

Nic*_*hek 4 android jar maven bintray jcenter

我通过教程将我的lib上传到bintray.com ,现在在"文件"选项卡中存在文件列表.

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

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

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

*-javadoc.jar 
*-javadoc.jar.asc 
*-sources.jar 
*-sources.jar.asc 
*.aar 
*.aar.asc 
*.pom 
*.pom.asc
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

cju*_*jiu 7

我们一次一个地提出问题:

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

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

AAR代表Android档案.它是Android的新二进制格式库,相当于*.jarJava世界的二进制格式.(见这个)

这只包含已编译的代码.没有javadoc,没有消息来源.

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

让我们逐个采取每个文件:

1. <library name>.pom

这是一个存储有关库的元数据的XML文件.

通常,它存储以下内容:

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

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

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

2. <library name>.aar

如上所述,这存储了编译的Java/Kotkin代码.还包含各种Android资源,如字符串,Drawables,布局文件,主题,样式等.

详情请见此处.

3. library name>-javadoc.jar

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

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

4. library name>-sources.jar

包含库的源代码.这又是一个存档,而不是可执行文件.

它包含您的实际*.java或*.kotlin文件,以及注释.拥有此文件允许您的库的客户端正确地查看您的代码,逐行检查它,并更好地了解您的代码所做的事情.

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

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

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

这是Bintray生成的文件,用于保证您是上传文件的人.这就是为什么你的所有文件都有一个共同作用的原因*.asc.

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

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

*.pom

我假设您正在使用Bintray Gradle插件,因为您提到了bintrayUpload任务.

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

publishing {
    publications {
        MyPublicationName(MavenPublication) {
        ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

./gradle generatePomFileForMyPublicationNamePublication
Run Code Online (Sandbox Code Playgroud)

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

*.aar

./gradle :moduleName:assembleRelease
Run Code Online (Sandbox Code Playgroud)

只需替换moduleName库模块的名称即可.

*-sources.jar

您需要定义一个在jar下存档源文件的任务.我看起来如下:

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

然后你可以打电话:

./gradle :moduleName:sourcesJar
Run Code Online (Sandbox Code Playgroud)

和以前一样,替换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
}
Run Code Online (Sandbox Code Playgroud)

然后调用:

./gradle :moduleName:javadocJar
Run Code Online (Sandbox Code Playgroud)

你就定了!另外,请替换moduleName库模块的名称.

*.asc

上传文件后,这些文件实际上是由Bintray生成的.没有必要在本地生成它们.

希望这可以帮助!