![](/img/trans.png)
[英]Publish an aar file to Maven Central with Gradle not working
[英]How to GPG sign and publish an aar directly to Maven Central?
我正在正確設置我的 Gradle 腳本以將.aar
直接發布到 Maven Central (使用JFrog 關閉 Bintray ,有關發布到 Bintray 的大量資源不再相關)。 先決條件之一是將所有工件(aar,源 jar,java-doc jar,pom.xml)與相應的 GPG 簽名文件(例如sources.jar.asc
)一起上傳
遵循這兩個指南(非常相似),我在很大程度上設法做到了:
然而,雖然很好地描述了使用 Gradle 的解決方案,但兩個指南似乎都關注plain.jar 而不是.aar。 特別是,我不確定要設置什么作為項目存檔以便放入自動簽名+發布列表,如建議的那樣:
project.artifacts {
archives sourceJar // Ok, I have a sourceJar task - will be signed and uploaded
archives javadocJar // I use Dokka, but got that to work by registering my dokka task
archives jar // What's "jar"? this doesn't help much!... :-/
}
我什至嘗試注冊 output .aar
文件,明確:
publications {
android.libraryVariants.all { variant ->
if (shouldPublishVariant(variant)) {
// ...
// ...
variant.outputs.forEach { output ->
project.artifacts {
archives output.outputFile // The full path of the .aar to publish!
}
}
}
}
}
但這似乎導致了這個片狀錯誤:
Execution failed for task ':detox:publishMavenFullReleaseAarPublicationToMavenRepository'.
> Failed to publish publication 'mavenFullReleaseAar' to repository 'maven'
> Invalid publication 'mavenFullReleaseAar': artifact file does not exist: '.../build/outputs/aar/library-full-release.aar.asc'
我正在尋找一種穩定的、防彈的解決方案,可以端到端地解決這個問題,沒有片狀錯誤。
作為一種解決方案,我發現將生成.aar
的任務注冊為項目存檔——而不是注冊文件本身,就可以解決問題(就像對源代碼和 javadoc jar 所做的那樣):
publications {
android.libraryVariants.all { variant ->
if (shouldPublishVariant(variant)) {
// ...
// ...
variant.outputs.forEach { output ->
project.artifacts {
// For example: bundleProdReleaseAar is the task that generates library-prod-release.aar
archives project.tasks["bundle${variant.name.capitalize()}Aar"]
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.