微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将主项目的依赖项添加到 gradle/groovy 中的子项目?

如何解决如何将主项目的依赖项添加到 gradle/groovy 中的子项目?

鉴于以下项目结构:

.
├── src
│   └── proto
│       └── ....
├── build/generated/..
│   ...
├── proj1
│   ├── src
│   │   └──...
│   └── build.gradle
├── proj2
│   └── person-service
│       ├── src
│       │   └──...
│       └── build.gradle
├── build.gradle
└── settings.gradle

和 settings.gradle:

rootProject.name = 'mainProj'

include 'proj1'
include 'proj2'

mainProj 将一些Java 类编译到build 文件夹中,该文件夹由sourceSets 包含在mainProj 的build.gradle 中;他们编译得很好。

但是子项目在编译时无法到达生成的类。不幸的是,以下在 proj1/build.gradle 中不起作用:

dependencies {
    runtimeOnly  project(':mainProj')
}

它失败了:

...
A problem occurred evaluating project ':proj1'.
> Project with path ':MainProj' Could not be found in project ':proj1'.
...

否则子项目编译/运行良好,没有缺少依赖项的代码

解决方法

注意:Stackoverflow 的神奇之处在于,每当我发布问题时,我都会设法以一种导致解决方案的方式思考问题。我 80% 的问题都是这种情况。

解决方案之一是在项目中添加另一个子模块:

settings.gradle:


rootProject.name = 'mainProj'

include `shared`
include 'proj1'
include 'proj2'

./build.gradle 中的任何内容都应移至 ./shared/build.gradle;位置(鉴于子项目在 settings.gradle 中正确设置)应该没有区别。在此解决方案中,根 build.gradle 可以留空。

完成上述操作后,以下应该是有效的依赖项:

dependencies {
    runtimeOnly  project(':shared')
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。