我想在我的项目中使用一个项目作为git子模块,理想情况下不更改上游项目(或者,如果有意义的话,以将其合并到那里的方式对其进行更改)。
问题是该项目由模块组成,我想直接使用其中的两个,一个也取决于另一个。
myProject
├ submodule
| ├ first
| | ├ build.gradle: implementation project(":second") <---- this fails if I don't change it to :submodule:second
| ├ second
| ├ settings.gradle: include ':first', ':second'
├ app
| ├ build.gradle: implementation project(":submodule:first"), implementation project(":submodule:second")
| ├ settings.gradle: include ':submodule:first', ':submodule:second', ':app'
当我的项目settings.gradle
替换子模块的时settings.gradle
,子模块的绝对路径突然改变。我可以以某种方式将':submodule:second包括为:second'吗?
我知道我可以相应地使用implementation project(somePrefix + ":second")
和定义它somePrefix
,但这将涉及触摸子模块。
Gradle项目路径(例如':submodule:second'
)
include ':submodule:second'
您settings.gradle
将使用隐式创建一个名为的项目submodule
,即使与构建完全无关。从文档中查看以下示例:
// include two projects, 'foo' and 'foo:bar'
// directories are inferred by replacing ':' with '/'
include 'foo:bar'
// include one project whose project dir does not match the logical project path
include 'baz'
project(':baz').projectDir = file('foo/baz')
但是,我建议完全不使用include
。而是使用includeBuild
并设置复合构建。组合版本与经典的多项目版本在耦合方面有所不同。由于您的Git子模块指示可以用作独立项目的构建(具有其自己的settings.gradle
),因此将多项目构建强耦合似乎是不合适的。多个settings.gradle
文件也可能在多项目构建中引起问题,但是对于复合构建来说是很好的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句