gradle 未找到名为“java”的SoftwareComponentInternal

c6ubokkw  于 2023-05-18  发布在  Java
关注(0)|答案(2)|浏览(310)

应用模块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插件不兼容。
所以我被困在这里了。我该如何解决这个问题?

0sgqnhkj

0sgqnhkj1#

我终于找到解决办法了!
我做错了几件事,首先,dokkaJarsourceJar 任务都必须在主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文件不包括依赖关系链,因此必须显式添加...
我不得不补充一点:

pom {
...
    withXml {
       val dependenciesNode = asNode().appendNode("dependencies")
       configurations.getByName("implementation") {
         dependencies.forEach {
            val dependencyNode = dependenciesNode.appendNode("dependency")
            dependencyNode.appendNode("groupId", it.group)
            dependencyNode.appendNode("artifactId", it.name)
            dependencyNode.appendNode("version", it.version)
         }
       }     
    }       
}
643ylb08

643ylb082#

不要使用from(components[“java”]),正确的代码如下:

create<MavenPublication>("ReleaseAar") {
    groupId = "com.example"
    artifactId = "lib-git-repository"
    version = "1.0.0-SNAPSHOT"
    afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) 
}

相关问题