如何在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,但这将涉及触摸子模块。

卢卡斯·科弗

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在go dep项目中将go模块用作依赖项?

如何在父文件夹的多模块Gradle项目中声明公共依赖项

如何在Gradle项目中插入新的依赖项?

如何在Gradle中将其他子项目中选择的类用作测试依赖项

如何在Spring-boot多模块Java 11项目中添加Spark依赖项

如何在Gradle多项目构建中为子模块包括对父测试类的依赖?

在build.sbt中,父项目中的依赖项未反映在子模块中

如何在位框架的不同项目中进行模块化依赖项注册?

Gradle 多模块项目编译失败,来自子模块中提到的依赖项的“classNotFoundExceptions”

Cabal:如何在同一项目中配置可传递构建依赖关系

Gradle:如何检查项目中的重复依赖项?

如何避免在多模块Gradle项目中重复依赖版本?

如何在python项目中包含库依赖项?

使用IntelliJ,如何在sbt项目中添加依赖项

如何在使用Bazel作为构建系统的Android项目中导入外部模块/依赖项(例如Flic)?

如何在父项目中添加和提交子模块而不重置其他子模块的状态?

现有Gradle项目中的Git子模块

多个子模块/项目中的Bitrise Xamarin构建配置

如何在gradle.build中添加模块依赖项

如何在多模块项目中配置Maven Shade插件?

是否可以从父项目中修补Git中的子模块?

如何将gradle作为依赖项添加到子项目根项目中?

如何在Gradle中从父项目获取依赖项版本

如何在Gradle中迭代项目的依赖项

如何在依赖的Gradle项目中使用依赖的实现依赖?

如何在多模块Maven项目中让子项目继承超级项目的依赖版本?

SBT:如何依赖同一项目中的交叉编译模块

如何在gradle中的一条指令中将多个项目依赖项添加到配置中

如何使用诗歌安装子模块的依赖项?