apply plugin: 'maven-publish'
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
android.libraryVariants.all { variant ->
if (variant.name == 'release') {
owner.classpath += variant.javaCompileProvider.get().classpath
}
}
exclude '**/R.html', '**/R.*.html', '**/index.html'
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
archiveClassifier.set('javadoc')
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
from android.sourceSets.main.java.srcDirs
}
// Because the components are created only during the afterEvaluate phase, you must
// configure your publications using the afterEvaluate() lifecycle method.
afterEvaluate {
publishing {
publications {
// Creates a Maven publication called "release".
release(MavenPublication) {
// Applies the component for the release build variant.
from components.release
// Adds javadocs and sources as separate jars.
artifact androidJavadocsJar
artifact androidSourcesJar
// You can customize attributes of the publication here or in module's build.gradle file (if you save this as script and include it build.gradle file, then you can just replicate this whole block there only with changed fields).
//groupId = 'com.example'
//artifactId = 'custom-artifact'
version = android.defaultConfig.versionName // or just '1.0'
}
}
}
}
7条答案
按热度按时间zxlwwiss1#
当前答案
使用Android Gradle Plugin 7.1,现在可以非常简单地执行此操作,无需任何复杂的脚本。AGP现在还可以处理源代码和javadocs jar的创建。
您不需要任何单独的脚本,只需将所有内容写入模块的
build.gradle
文件即可:另请参阅:https://developer.android.google.cn/studio/build/maven-publish-plugin
∮旧答案∮
2020年3月3日更新:
自Android Studio 3.6发布以来,Android Gradle插件3.6.0(及更新版本)中实现了对构建AAR(甚至APK和AAB)的支持。
我们不再需要自己处理XML依赖项和其他东西。
下面是我更新的要点Android Studio 3.6.0:https://gist.github.com/Robyer/a6578e60127418b380ca133a1291f017
依据代码:
旧答案:
下面是我根据其他答案改进的解决方案。
要点:
与其他答案相比的变化:
classifier
-它必须是"sources"
(不是"source"
)@aar
和transitive: false
。在这种情况下,我们在POM中设置exclusion以忽略此依赖项的所有传递依赖项。更改日志:
*2018年3月27日-在新Gradle中添加了对 API / * 实施 * 依赖项的支持
*2018年11月23日-将
bundleRelease
重命名为bundleReleaseAar
,因为它在新的Gradle中发生了更改(参见此答案)*23.11.2018-将
getAllDependencies
更改为getDependencies
,以修复重复的结果条目(如我的要点评论中所述)。*2019年4月23日- Package 在
project.afterEvaluate{...}
中,以针对新Gradle进行修复。tf7tbtn22#
下面是一个使用新的
maven-publish
插件的示例。使用
./gradlew clean build publish
发布pbwdgjma3#
对dskinner进行一点调整,以正确生成依赖项:
您可以通过定义以下内容来更改
version
和groupId
:eivgtgni4#
如果您希望避免样板代码,因为
maven-publish
插件不会将依赖项写入pom.xml试试这个插件:android-maven-publish
更新日期:
android-maven-publish插件已弃用,因为AGP正式支持maven-publish。
pcww981p5#
这就是我如何使用Kotlin DSL(build.gradle.kts)包含Dokka(查看online)和my Android Kotlin library的源代码JAR的方法:
waxmsbnn6#
您也可以使用android maven plugin,它创建.aar、javadoc.jar、sources.jar和.pom,并在将文件上传到maven存储库后更新maven-metadata.xml。
打电话给
9vw9lbht7#
使用Kotlin
build.gradle.kts
: