如何解决如何将主项目的依赖项添加到 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 举报,一经查实,本站将立刻删除。