子项目依赖项与Gradle失败
我正在努力处理Gradle和以下项目结构的构建配置(非常简单…): projC使用projB中的类 在projA/settings.gradle中:子项目依赖项与Gradle失败,gradle,dependency-management,multi-module,multi-project,Gradle,Dependency Management,Multi Module,Multi Project,我正在努力处理Gradle和以下项目结构的构建配置(非常简单…): projC使用projB中的类 在projA/settings.gradle中: include 'projB' include 'projC' 在projC/build.gradle中: dependencies{ compile project(':projB') } 在IntelliJ中,我没有依赖项解析的问题,但是当我在projA中运行./gradlew构建时,我面临一个编译错误: ClassC: Unresolv
include 'projB'
include 'projC'
在projC/build.gradle中:
dependencies{
compile project(':projB')
}
在IntelliJ中,我没有依赖项解析的问题,但是当我在projA中运行./gradlew构建时,我面临一个编译错误:
ClassC: Unresolved reference: ClassB
(其中ClassC是projC的类,它在使用ClassB时失败,而ClassB显然是projB的一个类…)
请注意,代码是用Kotlin语言编写的,在IntelliJ(spring boot run)中运行应用程序没有任何问题,但是任何使用Gradle的构建都会给我一个错误(IntelliJ和命令行中都有)
我错过了什么
问候,,
Adrien为您的
rootProject
添加一个顶级目录是一个常见的Gradle习惯用法。这是一个特殊的项目,它是构建中所有其他项目的父项目
这就是您的设置.gradle
文件的位置:
include ':projA:projB'
include ':projA:projC'
然后,我建议将projA作为根项目的子目录,这样您的层次结构将如下所示:
/myProject
settings.gradle
/projA
build.gradle
/projB
build.gradle
/projC
build.gradle
另外,在projC/build.gradle
中,您需要:
dependencies {
compile project(':projA:projB')
}
应该可以了。谢谢Felipe,我的第一个项目层次结构(projA是projB和projC的父级),
编译项目(“:projB”)
我的projC上的in build.gradle不会做这项工作吗?既然projA已经是作为父项目的顶级项目,为什么我需要添加一个额外的顶级项目?AFAIK Gradle希望您提供项目依赖项的“完整路径”,这就是为什么您需要“:projA:projB”
,将其视为目录的相对路径。
dependencies {
compile project(':projA:projB')
}