Gradle 6.0 打破了源集依赖

2024-01-03

我在这里为学生收集了一些课程:https://github.com/emign/engineEmi_Lektionen/tree/master https://github.com/emign/engineEmi_Lektionen/tree/master

该项目的依赖库通过 gradle 插件注入:https://github.com/emign/engineEmi_GradlePlugin/blob/98a70b6a54c21c730a9d1cb6e4fee9ac369b8fc6/src/main/kotlin/me/emig/engineEmi/gradle/EngineEmiGradlePlugin.kt#L43 https://github.com/emign/engineEmi_GradlePlugin/blob/98a70b6a54c21c730a9d1cb6e4fee9ac369b8fc6/src/main/kotlin/me/emig/engineEmi/gradle/EngineEmiGradlePlugin.kt#L43

在 gradle 5.6.4 之前,一切都运行良好。但是当我升级包装器时,它会损坏并丢失上述库的源集。有人能帮我吗?

重现步骤:

  1. 克隆仓库
  2. 使用 gradle 包装器版本 5.6.4 -> 示例有效。 (集成了源集依赖引擎Emi)
  3. 使用 gradle 包装器版本 6.0 或更高版本 -> 示例中断(缺少源集依赖项engineEmi)

EDIT忘记错误信息:

 > Task :compileKotlinJvm FAILED

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.2.2/userguide/command_line_interface.html#sec:command_line_warnings
1 actionable task: 1 executed
e: /Users/username/dev/engineEmi/engineEmi_Template/src/commonMain/kotlin/Main.kt: (1, 8): Unresolved reference: me
e: /Users/username/dev/engineEmi/engineEmi_Template/src/commonMain/kotlin/Main.kt: (16, 9): Unresolved reference: engine
e: /Users/username/dev/engineEmi/engineEmi_Template/src/commonMain/kotlin/Main.kt: (21, 13): Unresolved reference: init
e: /Users/username/dev/engineEmi/engineEmi_Template/src/commonMain/kotlin/Main.kt: (28, 13): Unresolved reference: viewWillLoad
e: /Users/username/dev/engineEmi/engineEmi_Template/src/commonMain/kotlin/Main.kt: (35, 13): Unresolved reference: viewDidLoad
e: /Users/username/dev/engineEmi/engineEmi_Template/src/commonMain/kotlin/Main.kt: (39, 13): Unresolved reference: start

它只是找不到库(包)。切换回 5.6.4 让它再次找到该库


最后我能够修复它。

问题是我可以重现的两件事的组合:

1.Kotlin多平台发布

您不需要使用 kotlin 手动创建出版物 multipatform:与发布普通 Kotlin/JVM 或 Java 相比 项目中,无需通过手动创建出版物 发布 { ... } (参见此处:1 https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#publishing-a-multiplatform-library)

The kotlin {}block 几乎可以为你做任何事情。您只需将发布到的存储库添加到publishing {}堵塞。例如::

publishing {
    publications {
        val kotlinMultiplatform by getting {
            repositories {
                maven {
                    credentials {
                        username = "USERNAME"
                        password = System.getenv("bintrayApiKey")
                    }
                    url = uri(
                        "https://api.bintray.com/maven/ORG/REPO/ARTIFACT/"

                    )
                }
            }
        }
    }
}

2. 发布的gradle任务

不知何故,任务publishAllPublicationsToMavenRepository不适合我。你确实需要使用publish task

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle 6.0 打破了源集依赖 的相关文章

随机推荐