【问题标题】:SourceSet with name 'main' not found未找到名称为“main”的 SourceSet
【发布时间】:2022-01-22 02:10:49
【问题描述】:

我想在我的 Android 应用程序中发布 Maven,并且我正在使用 kotlin-dsl 来处理 gradle 文件。这就是我尝试发布代码的方式:

subprojects {
plugins.apply("maven-publish")

afterEvaluate {
    // Common settings
    if (isAndroidLibrary || isAndroidApplication) {
        extensions.getByType<com.android.build.gradle.BaseExtension>().apply {

            compileSdkVersion(CommonVersions.targetsdk)
            buildToolsVersion = CommonVersions.buildTools

            defaultConfig {
                minSdkVersion(CommonVersions.minsdk)
                targetSdkVersion(CommonVersions.targetsdk)
            }

            compileOptions {
                sourceCompatibility = JavaVersion.VERSION_1_8
                targetCompatibility = JavaVersion.VERSION_1_8
            }

            buildFeatures.viewBinding = true

            tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
                kotlinOptions {
                    jvmTarget = "1.8"
                }
            }
        }
    }


    // Set up publishing configuration

    val sourceSets: SourceSetContainer by project
    print("project name: $name, ")
    print("project size: ${sourceSets.size}, ")
    print("project size: ${project.the<SourceSetContainer>().size}, ")
    print("project size: ${the<SourceSetContainer>().size}, ")

    if (!notPublishingModules.contains(name) && sourceSets.size != 0) {
        configure<PublishingExtension> {
            publications {
                create<MavenPublication>("maven") {
                    groupId = "xx.yyy.zz"
                    artifactId = "test"
                    version = "0.0.0"
                    from(components.findByName("release"))

                    val sourcesJar by tasks.creating(Jar::class) {
                        val sourceSets: SourceSetContainer by project

                        from(sourceSets["main"].allJava)
                        classifier = "sources"
                    }

                    artifact(sourcesJar)
                }
            }
        }
    }
}

}

我总是收到此错误:找不到名称为 'main' 的 SourceSet。

如您所见,我试图将源集打印出来,看看它是否有任何信息。源集的大小始终为零。

我做错了什么?

【问题讨论】:

    标签: android gradle gradle-kotlin-dsl


    【解决方案1】:

    我在 spring 应用程序中使用 groovy,我认为你在代码中缺少这个

    sourceSets {
        main { 
            java { srcDirs = ["src/java"] }
            resources { srcDir "src/resources" }
        }
    }
    

    你定义 srcDirs 在哪里。

    【讨论】:

    • 谢谢,我认为 main 应该是自动生成的,我不必定义它。
    • 也许,我对 kotlin-dsl 不熟悉,我认为这部分有问题,因为我通常必须使用 groovy 来定义它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2021-05-17
    • 1970-01-01
    • 2016-10-23
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多