我在文件夹结构中有3个彼此相邻的Java项目:Proj1
,Proj2
和Proj3
。 Proj1
取决于Proj2
,具体取决于Proj3
。
以下是他们的gradle.settings
个文件:
rootProject.name = 'Proj3'
rootProject.name = 'Proj2'
include ':Proj3'
project(':Proj3').projectDir = new File(settingsDir, '../Proj3')
rootProject.name = 'Proj1'
include ':Proj2'
project(':Proj2').projectDir = new File(settingsDir, '../Proj2')
及其gradle.build
个文件:
2
apply plugin: 'java'
dependencies {
compile project(':Proj3')
}
1
apply plugin: 'java'
dependencies {
compile project(':Proj2')
}
第二和第三个项目由Gradle建造得很好,但当我尝试建造第一个项目时,它会抱怨
评估项目':Proj2:'时出现问题。在项目':Proj2'中找不到具有路径':Proj3'的项目。
并指向行compile project(':Proj3')
(在Proj2
的构建中)。堆栈跟踪以
org.gradle.tooling.BuildException:无法使用Gradle分发“https://services.gradle.org/distributions/gradle-3.1-bin.zip”获取“EclipseProject”类型的模型。
不知道为什么第二个项目在建造时可以找到第三个罚款,而在第一个项目建成时突然没有。为什么第一次关注第二次搜索第三次之后是否已经包含在“Project and External Dependencies”文件夹中。
如何让它发挥作用?
答案 0 :(得分:0)
我认为,你为一个错误的项目配置提供了帮助。一个多模块项目只能有一个settings.gradle
文件,这个文件应该包含所有模块。
所以结构可能是这样的:
RootProject/
build.gradle
settings.gradle
Proj1/
build.gradle
Proj2/
build.gradle
Proj3/
build.gradle
settings.gradle
至少包含以下内容:
include 'Proj1', 'Proj2', 'Proj3'
在这种情况下,似乎您不需要一些额外的设置来更改模块名称或它的目录。您可以在official user guide。
中阅读相关内容答案 1 :(得分:0)
我发现无需发布任何内容或更改目录结构即可完成此操作。
项目3不需要settings.gradle
或其中的依赖项build.gradle
。
项目2需要settings.gradle
:
include ':Proj3'
project(':Proj3').projectDir = new File(settingsDir, '../Proj3')
和build,gradle
:
dependencies {
compile project(':Proj3')
}
项目1需要settings.gradle
:
include ':Proj3', ':Proj2'
project(':Proj3').projectDir = new File(settingsDir, '../Proj3')
project(':Proj2').projectDir = new File(settingsDir, '../Proj2')
和build,gradle
:
dependencies {
compile project(':Proj2')
}
这就是关键!项目1虽然仅依赖于项目2,但也需要在其设置中包括和指定项目3。然后一切正常。