如何告知Gradle与IntelliJ项目文件夹结构已变更?
调整Gradle项目结构+适配IntelliJ的实操方案
问题说明
我用的是带Wrapper的Gradle,默认项目结构是这样的:
. ├── settings.gradle ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew └── gradlew.bat
想改成下面这种结构:
. ├── gradle | ├── build.gradle │ ├── settings.gradle │ ├── gradle.properties │ └── wrapper │ ├── gradlew │ ├── gradlew.bat │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties └── src ├── main └── test
现在卡两个点:
- 不知道怎么让IntelliJ认这个新结构
- Gradle里原来改结构用的环境选项已经弃用了,不知道该怎么配置:
-b, --build-file (已弃用)
指定构建文件。示例:gradle --build-file=foo.gradle。默认值为build.gradle,其次是build.gradle.kts。-c, --settings-file (已弃用)
指定设置文件。示例:gradle --settings-file=somewhere/else/settings.gradle
解决步骤
一、Gradle配置适配新结构
既然老的命令行参数弃用了,用下面两种方法搞定:
1. 根目录加引导用的settings文件
在项目根目录新建一个settings.gradle,内容就一行,指向新位置的settings:
apply from: file('gradle/settings.gradle')
同时,根目录建个空的build.gradle就行——或者更直接,在根目录的settings.gradle里直接指定构建文件路径(Gradle 7.0+支持):
rootProject.buildFileName = 'gradle/build.gradle'
2. 修改Wrapper脚本和配置
把gradlew、gradlew.bat移到gradle/wrapper目录后,得改脚本里的路径引用:
- 打开
gradlew,找到DEFAULT_GRADLE_WRAPPER_PROPERTIES这行,改成:
DEFAULT_GRADLE_WRAPPER_PROPERTIES="gradle/wrapper/gradle-wrapper.properties"
- 打开
gradlew.bat,找到set DEFAULT_GRADLE_WRAPPER_PROPERTIES这行,改成:
set DEFAULT_GRADLE_WRAPPER_PROPERTIES=gradle\wrapper\gradle-wrapper.properties
另外,编辑gradle/wrapper/gradle-wrapper.properties,加一行指定settings文件位置:
org.gradle.settings=gradle/settings.gradle
这样用gradlew执行命令时,会自动加载正确的settings。
二、让IntelliJ识别新结构
- 导入项目时选根目录,别选
gradle子目录。 - 导入后进
File > Project Structure:- 到
Project Settings > Modules,确认src/main和src/test被标记成源目录/测试目录(没自动识别的话,右键目录选Mark Directory as > Sources Root/Test Sources Root)。 - 到
Build, Execution, Deployment > Build Tools > Gradle,设置Gradle project为根目录,确保配置文件路径指向gradle/settings.gradle和gradle/build.gradle。
- 到
- 要是识别有问题,试试:
File > Invalidate Caches... > Invalidate and Restart重启IDEA。- 点右侧Gradle面板的刷新按钮手动同步。
内容的提问来源于stack exchange,提问作者yaserso
相关产品推荐
相关产品推荐

