我有几个最初仅在buildSrc中使用的类。但是现在我在子项目A2中也需要它们。
| - rootProject A
| - buildSrc
| - subproject A1
| - subproject A2
implementation(":buildSrc")
添加到A2的依赖项中。不幸的是,它没有用。我无法链接到buildSrc,gradle说了类似“项目A中没有'buildSrc'子项目”之类的内容。 implementation(files("${project.rootDir}/buildSrc/build/classes/"))
也不起作用。它可以生成,但是buildArc中的类无法在A2的源中访问。 settings.gradle.kts
中,我放置了includeBuild("B")
。再说一次,我可以在A2中将它用作implementation("mygroup:B")
,而不能在buildSrc中使用它:Could not find mygroup:B.\n Required by:\n project :
那么,我还有什么选择呢?还是我以前的尝试做错了什么?
最佳答案
我相信您可以从Gradle 6.7开始使用选项4
参见Issue #3768和related release notes in v6.7
“现在,buildSrc可以看到包含的内部版本
我们建议构建使用专门命名的buildSrc构建来组织命令式和通用构建逻辑。
有时,您可能还需要在buildSrc自身和根构建之间共享构建逻辑。在以前的版本中,这是不可能的,因为buildSrc无法访问其他包含的内部版本的内部版本逻辑。
在此发行版中,现在可以在buildSrc和根构建或任何其他包含的构建之间共享构建逻辑。这样可以更轻松地在buildSrc与其他构建之间共享通用的存储库声明或约定,如本示例所示。”
关于gradle - 如何与buildSrc和子项目之一共享某些类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64600165/