如何解决如何在gradle项目中配置依赖项,使其也可以用作子模块?
我想在我的项目中使用一个项目作为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
,但这将涉及触摸子模块。
解决方法
渐变项目路径(例如':submodule:second'
)
- 实际上代表了项目层次结构。这意味着即使您的构建完全不相关,在
include ':submodule:second'
中使用settings.gradle
也会隐式创建一个名为submodule
的项目。 - 不需要匹配目录结构(这只是一个约定)。您可以独立于项目路径(和项目名称)设置项目目录。
从the documentation中查看以下示例:
// 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
并设置一个composite build。组合版本与经典的多项目版本在耦合方面有所不同。由于您的Git子模块指示可以用作独立项目的构建(具有自己的settings.gradle
),因此,将多项目构建强耦合似乎是不合适的。多个settings.gradle
文件也可能会在多项目构建中引起问题,但对于复合构建是很好的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。