昨天,我将安卓工作室升级为Arctic Fox,从6级升级到7级。
Gradle 7删除了“maven”插件,作为自动化/CI构建的一部分,我的团队一直在使用该插件将我们拥有的Android库打包到AAR文件中。
以前在我们图书馆的
build.gradle
我们拥有的文件
apply plugin: 'maven'
...
android {
// normal android library stuff here
}
...
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://$projectDir/deploy")
}
}
}
结果是我们可以跑了
gradle uploadArchives
,并且一个漂亮的maven目录结构将输出到
$projectDir/deploy
文件夹我们的CI系统可以接收并分发它,一切都很好。
(作为参考,它看起来是这样的,我希望用Gradle 7复制它)
deploy/
com/
mycompany/
mylibrary/
maven-metadata.xml
maven-metadata.xml.sha1
1.0.0/
mylibrary.aar
mylibrary.aar.sha1
mylibrary-1.0.0.pom
mylibrary-1.0.0.pom.sha1
(.md5文件也在其中,但并不重要)
然而,Gradle 7删除了所有这些内容,并告诉我们使用
maven-publish
插件,我无法使用它。
这是我目前最大的努力,基于
Google's page here
apply plugin: 'maven-publish'
...
android {
// normal android library stuff here
}
...
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
}
debug(MavenPublication) {
from components.debug
}
}
}
repositories {
maven {
url = layout.buildDirectory.dir('deploy')
}
}
}
然而,当运行此操作时,它不会产生所需的输出。以下是的输出
./gradlew --info publish
:
> Task :mylibrary:publish UP-TO-DATE
Skipping task ':mylibrary:publish' as it has no actions.
:mylibrary:publish (Thread[Execution worker for ':',5,main]) completed. Took 0.002 secs.
当我跑步时
./gradlew --info publishRelease
,然后它会记录更多,并实际编译库,但它不会“发布”它。我最终得到了这样的目录结构:
mylibrary/
build/
publications/
release/
pom-default.xml
module.json
outputs/
aar/
mylibrary-release.aar
没有
deploy
文件夹,并且没有版本化的maven文件夹层次结构。
请帮忙?互联网上充斥着关于maven发布插件的复杂gradle文档,但没有一个是针对Android的,也没有一个似乎在Android库的上下文中工作。