Gradle多项目构建报错:根项目'javafx'中找不到':module2'项目
解决Gradle多项目中JavaFx模块引用外部模块报错问题
问题背景
使用Gradle构建Java多项目,目标是通过共享模块开发JavaFx和Android应用,项目结构如下:
multiproject\ -javafx\ --build.gradle --settings.gradle -module1\ --build.gradle -module2\ --build.gradle
构建JavaFx模块时出现报错:
A problem occurred evaluating root project 'javafx'. > Project with path ':module2' could not be found in root project 'javafx'.
相关配置文件:
/javafx/build.gradle
dependencies { implementation project(":module2") testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}") }
根项目settings.gradle
rootProject.name = 'multiproject' include 'module1', 'javafx' include 'module2'
需求:使用JavaFx/Android项目外部的共享模块,模块处于开发阶段暂不发布到仓库。
解决方案
1. 删除JavaFx模块内的settings.gradle文件
javafx目录下的settings.gradle会让Gradle将javafx识别为独立根项目,而非multiproject的子模块。删除该文件后,javafx会作为multiproject的子模块,继承根项目的settings配置,从而能正确识别同级的module2。
2. 优化根项目settings.gradle的模块引用
可以将分散的include语句合并,写法更简洁,效果一致:
rootProject.name = 'multiproject' include 'module1', 'javafx', 'module2'
3. 确认依赖引用路径
javafx的build.gradle中对module2的引用路径:module2是正确的,因为module2是根项目下的直接子模块,删除javafx自己的settings.gradle后,该引用就能被正确解析。
完成以上步骤后,重新执行构建命令即可解决报错。
内容的提问来源于stack exchange,提问作者Nguyen Khanh
相关产品推荐
相关产品推荐

