java - 带有 Kotlin Gradle 和 Git 子模块的多个 buildSrc 文件夹

标签 java android kotlin gradle gradle-kotlin-dsl

我有一个带有 Kotlin Gradle 的 Android 项目(主项目)。该项目还包含 Git 子模块,该子模块也使用 Kotlin Gradle(子模块项目)。

主项目有buildSrc带有 Configuration 的文件夹里面上课。子模块项目也有自己的buildSrc带有 Configuration 的文件夹里面上课。

主要项目使用module1module2来自子模块项目。这些模块使用 Configuration build.gradle.kts 中子模块项目的类文件。

问题来了 : 当我连接 module1module2在我的主项目中,出现编译错误是因为 buildSrc子模块项目中的文件夹未编译,但 buildSrc从主模块将被编译。

问题是下一个 : 如何合并 buildSrc文件夹,如果我不能,那么我应该如何处理这种情况?

备注 : 我不想只是从子模块的 buildSrc 中复制粘贴类文件夹到主目录 buildSrc .我想在其他项目中重用这个子模块。

这是简化的项目结构:

+-- app/
+-- android-sub/ (submodule)
|   +-- app/
|   +-- module1/
|       +-- build.gradle.kts
|   +-- module2/
|       +-- build.gradle.kts
|   +-- build/
|   +-- buildSrc/
|       +-- build/
|       +-- build.gradle.kts
|       +-- src/main/java
|           +-- Configuration
|    +-- gradle/
|    +-- build.gradle.kts
|    +-- gradlew
|    +-- gradlew.bat
|    +-- gradle.properties
|    +-- settings.gradle.kts
+-- build/
+-- buildSrc/
|   +-- build/
|   +-- build.gradle.kts
|   +-- src/main/java/
|       +-- Configuration
+-- gradle/
+-- build.gradle.kts
+-- gradle.properties
+-- gradlew
+-- gradlew.bat
+-- local.properties
+-- settings.gradle.kts

主营项目settings.gradle.kts :
include ':app', ':module1', ':module2'
project(':module1').projectDir = new File(rootDir, 'android-sub/module1')
project(':module2').projectDir = new File(rootDir, 'android-sub/module2')

最佳答案

在给定的 Gradle 构建中,只能有一个 buildSrc .

然而,在这里你试图通过将它们拼接在一起来组成两个独立的 Gradle 构建。

我建议改为查看 Gradle composite builds ,这将允许您组成两个完整的构建,每个都有自己的buildSrc .

关于java - 带有 Kotlin Gradle 和 Git 子模块的多个 buildSrc 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61519662/

相关文章:

java - 如何使用 Java 在 OrientDB 中使用批处理

android - fragment 内带有基本适配器的 ListView

android - TextField maxLength - Android Jetpack 撰写

kotlin - 有什么作用?。在作业的左侧使用时在 Kotlin 中的意思是什么?

java - "synchronization with main memory"是什么意思?

java - Hibernate 5 不能正确处理 LocalDate

java多态和继承问题

android - IntentService 的蓝牙连接问题

android - Web服务调试工具

android - 想要增加字符串中 unicode 代理对符号的大小,例如数学符号 i