应用模块build.gradle
apply plugin: 'com.android.library'
apply from: rootProject.file('deploy-bintray.gradle.kts')
android {...}
deploy-bintray.gradle.kts这是我的bintray/maven发布脚本。
我在生成.jar文件时遇到问题:
val sourcesJar by tasks.registering(Jar::class) {
archiveClassifier.set("sources")
from(project.the<SourceSetContainer>()["main"].allSource)
}
publications {
create<MavenPublication>(bintrayRepo) {
groupId = publishedGroupId
artifactId = artifact
version = libraryVersion
from(components["java"])
artifact(sourcesJar.get())
artifact(dokkaJar.get())
...
}
}
}
失败原因:
未找到名为“java”的SoftwareComponentInternal。
或者,如果我注解from(components["java"])
,它会失败:
未找到名为“main”的SourceSet。
如果我添加java插件:
已应用“java”插件,但与Android插件不兼容。
所以我被困在这里了。我该如何解决这个问题?
2条答案
按热度按时间0sgqnhkj1#
我终于找到解决办法了!
我做错了几件事,首先,dokkaJar 和 sourceJar 任务都必须在主
build.gradle
中,而不是在deploy-bintray.gradle.kts
中。移动它们使其工作并修复:SourceSet with name 'main' not found.
其次,我们不能使用
from(components["java"])
,因为这是一个Android库,所以我用artifact("$buildDir/outputs/aar/${artifactId}-release.aar")
替换了这一行。最后但并非最不重要的是,如here (step 7)所述:
此外,生成的POM文件不包括依赖关系链,因此必须显式添加...
我不得不补充一点:
643ylb082#
不要使用from(components[“java”]),正确的代码如下: