【问题标题】:maven-publish with Kotlin for android aarsmaven-publish with Kotlin for android aars
【发布时间】:2018-03-02 17:20:48
【问题描述】:

我有一个 Kotlin Android 库,我正在尝试将其发布到我设置的 s3 maven 存储库。一切正常,但我似乎看不到来源。这就是我所拥有的

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

publishing {
    repositories {
        maven {
            url awsUrl
            credentials(AwsCredentials) {
                accessKey awsAccessKey
                secretKey awsSecretKey
            }
        }
    }
    publications {
        aar(MavenPublication) {
            groupId = "com.example"
            artifactId = "library-0"
            version = libraryVersionName
            artifact("$buildDir/outputs/aar/${project.name}-debug.aar")
            artifact(sourceJar)
            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')
                //Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
                configurations.implementation.allDependencies.each {
                    if(it.group != null && (it.name != null || "unspecified".equals(it.name)) && it.version != null) {
                        def dependencyNode = dependenciesNode.appendNode('dependency')
                        dependencyNode.appendNode('groupId', it.group)
                        dependencyNode.appendNode('artifactId', it.name)
                        dependencyNode.appendNode('version', it.version)
                    }
                }
            }
        }
    }
}

project.tasks.whenTaskAdded { addedTask ->
    if (addedTask.name == 'generatePomFileForMavenJavaPublication') {
        addedTask.dependsOn assembleDebug
    }
}

在我的应用程序中,我添加了 maven repo url,并包含以下库:

implementation 'com.example:library-0:1.0.0-SNAPSHOT'

一切正常,应用程序构建并且库运行良好。唯一的问题是,当我查看任何类/函数的源代码时,我只看到函数存根说已编译代码而没有 javadoc。我应该对源 jar 做些什么不同的事情吗?

更新

我已将发布更改为 aar 并查看了我的 .gradle/caches/ 目录,该目录现在包含我的库:

AndroidManifest.xml
R.txt
jars/classes.jar
res/layout/**
res/values/**

jar/classes.jar 包含所有已编译的.class 文件和proguard 文件。在上传过程中,我确实看到我已经上传了:

library-0-1.0.0-20180306.153335-5.aar
library-0-1.0.0-20180306.153335-5.aar.md5
library-0-1.0.0-20180306.153335-5.aar.sha1
library-0-1.0.0-20180306.153335-5.pom
library-0-1.0.0-20180306.153335-5.pom.md5
library-0-1.0.0-20180306.153335-5.pom.sha1
library-0-1.0.0-20180306.153335-5-sources.jar
library-0-1.0.0-20180306.153335-5-sources.jar.md5
library-0-1.0.0-20180306.153335-5-sources.jar.sha1

更新

作为补充参考,我找到了一个类似发布的库示例:http://central.maven.org/maven2/com/mcxiaoke/volley/library-aar/1.0.1/ 在这里,它看起来与附加的-sources 的结构相同。 .pom 文件看起来不需要指定任何特殊内容。作为参考,这是我的.pom 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>library-0</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib-jre7</artifactId>
      <version>1.2.30</version>
    </dependency>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>appcompat-v7</artifactId>
      <version>27.1.0</version>
    </dependency>
    <dependency>
      <groupId>com.android.support.constraint</groupId>
      <artifactId>constraint-layout</artifactId>
      <version>1.0.2</version>
    </dependency>
    <dependency>
      <groupId>android.arch.lifecycle</groupId>
      <artifactId>extensions</artifactId>
      <version>1.1.0</version>
    </dependency>
    <dependency>
      <groupId>com.github.bumptech.glide</groupId>
      <artifactId>glide</artifactId>
      <version>4.6.1</version>
    </dependency>
  </dependencies>
</project>

【问题讨论】:

    标签: android maven kotlin


    【解决方案1】:

    尝试替换

    mavenJava(MavenPublication)
    

    aar(MavenPublication) 
    

    【讨论】:

    • 没有完全做到这一点,它看起来更正确,但我仍然没有在我的~/.gradle/caches/moduels2/files-2.1/ 目录中看到源 jar(它只是再次拉动.aar
    • 这只是改变出版物的名称,与它的内容无关。
    【解决方案2】:

    你试试这个gradle插件,很容易发布aars或者jars:

    https://github.com/wangjiegulu/RapidMavenPushPlugin

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2017-06-18
      • 2017-10-14
      • 2015-11-09
      • 1970-01-01
      • 2017-10-25
      相关资源
      最近更新 更多