为什么Intellij不喜欢我的Gradle版本?

yeotifhr  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(118)

我们有一个Gradle v6.8.2多模块项目,其结构如下:

.
├── searchapi
│   ├── build.gradle
│   └── settings.gradle
├── searchcommon
│   ├── build.gradle
│   └── settings.gradle
├── searchconfig
│   ├── build.gradle
│   └── settings.gradle
├── searchindexer
│   ├── build.gradle
│   └── settings.gradle
├── build.gradle
└── settings.gradle

子模块有许多重叠的依赖项(例如commons-lang),我们使用如下变量指定父模块build.gradle中这些依赖项的版本:
ext.commonslangversion = "[2,3)"
然后,在子项目中,我们将依赖关系指定为:
implementation "commons-lang:commons-lang:${commonslangversion}"
顶级构建本身在CLI和Intellij(v2022.1.4)中运行良好。
我遇到的问题是,当我试图在Intellij的一个子项目中运行代码时。具体来说,在searchindexer模块中,我有一个包含main()方法的类。当我右键单击并选择运行此方法时,我收到一个生成错误,内容如下:

A problem occurred evaluating root project 'searchindexer'.
> Could not get unknown property 'commonslangversion' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

有什么想法吗?
更令人困惑的是,如果我将main()方法的主体移到我的一个JUnit测试类方法中,并在Intellij中执行测试,它会构建并运行得很好。

gcuhipw9

gcuhipw91#

在gradle多项目构建中,您必须只有一个位于根项目级别的settings.gradle脚本。这里,您在每个子项目下放置了一个设置文件,因此gradle和intellij都不会将其视为多项目构建:子项目将被视为独立项目,并且不会继承在根项目级别上设置配置或属性
只需从子项目中删除settings.gradle文件。

相关问题