maven-publish with Kotlin for android aars



我有一个 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 存储库 url,并包含以下库:

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

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

更新

我已将出版物更改为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>

尝试替换

mavenJava(MavenPublication)

aar(MavenPublication) 

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

https://github.com/wangjiegulu/RapidMavenPushPlugin

最新更新