Gradle IntelliJ IDEA-创建或重新创建我不知道的目录';我不想要,或者已经删除了
场景 我正在使用IntelliJ IDEA中的Gradle模块构建一个Kotlin应用程序 我遇到了一个问题,对于我在项目中创建的每个Gradle模块,IntelliJ IDEA都会自动为我不想要的源集创建和/或重新创建目录结构 我正在Windows 10 x64上运行IntelliJ IDEA 2018.1.2 复制步骤Gradle IntelliJ IDEA-创建或重新创建我不知道的目录';我不想要,或者已经删除了,gradle,intellij-idea,Gradle,Intellij Idea,场景 我正在使用IntelliJ IDEA中的Gradle模块构建一个Kotlin应用程序 我遇到了一个问题,对于我在项目中创建的每个Gradle模块,IntelliJ IDEA都会自动为我不想要的源集创建和/或重新创建目录结构 我正在Windows 10 x64上运行IntelliJ IDEA 2018.1.2 复制步骤 打开IntelliJ IDEA并“创建新项目” 创建一个渐变项目 在“附加库和框架”中,仅勾选“Kotlin(Java)” 为项目提供一个GroupId、ArtifactId
src
目录,所以我删除了它,现在项目结构如下所示
template-app
├ .idea
├ gradle
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
template-app
├ .idea
├ gradle
├ mod-one
│ ├ src
│ │ ├ main
│ │ │ ├ java
│ │ │ ├ kotlin
│ │ │ └ resources
│ │ └ test
│ │ ├ java
│ │ ├ kotlin
│ │ └ resources
│ └ build.gradle
├ src
│ ├ main
│ │ ├ java
│ │ ├ kotlin
│ │ └ resources
│ └ test
│ ├ java
│ ├ kotlin
│ └ resources
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
template-app
├ .idea
├ gradle
├ mod-one
│ ├ src
│ │ ├ main
│ │ │ └ kotlin
│ └ build.gradle
├ mod-test
│ ├ src
│ │ └ test
│ │ └ kotlin
│ └ build.gradle
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
接下来,我在我的项目中创建了一个新的Gradle模块(mod one),现在项目结构如下所示
template-app
├ .idea
├ gradle
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
template-app
├ .idea
├ gradle
├ mod-one
│ ├ src
│ │ ├ main
│ │ │ ├ java
│ │ │ ├ kotlin
│ │ │ └ resources
│ │ └ test
│ │ ├ java
│ │ ├ kotlin
│ │ └ resources
│ └ build.gradle
├ src
│ ├ main
│ │ ├ java
│ │ ├ kotlin
│ │ └ resources
│ └ test
│ ├ java
│ ├ kotlin
│ └ resources
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
template-app
├ .idea
├ gradle
├ mod-one
│ ├ src
│ │ ├ main
│ │ │ └ kotlin
│ └ build.gradle
├ mod-test
│ ├ src
│ │ └ test
│ │ └ kotlin
│ └ build.gradle
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
注意mod one现在包含一个src
目录,但不仅如此,我之前删除的src
目录也被重新创建,包括它的子目录
我的预期结构
- 父模块(例如模板应用程序)根本不需要
目录。在项目的这个级别将没有代码src
- 每个模块(例如mod one)不包含任何测试,因此只需要
源集/模块,而不需要main
源集/模块测试
- 测试将包含在单个模块中(例如mod测试),因此只需要
源集/模块,而不需要test
源集/模块main
- 没有Java代码,因此我不需要
目录Java
- 在大多数情况下,我不需要
,我很乐意在必要时手动添加这些资源资源
template-app
├ .idea
├ gradle
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
template-app
├ .idea
├ gradle
├ mod-one
│ ├ src
│ │ ├ main
│ │ │ ├ java
│ │ │ ├ kotlin
│ │ │ └ resources
│ │ └ test
│ │ ├ java
│ │ ├ kotlin
│ │ └ resources
│ └ build.gradle
├ src
│ ├ main
│ │ ├ java
│ │ ├ kotlin
│ │ └ resources
│ └ test
│ ├ java
│ ├ kotlin
│ └ resources
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
template-app
├ .idea
├ gradle
├ mod-one
│ ├ src
│ │ ├ main
│ │ │ └ kotlin
│ └ build.gradle
├ mod-test
│ ├ src
│ │ └ test
│ │ └ kotlin
│ └ build.gradle
├ build.gradle
├ gradlew
├ gradlew.bat
└ settings.gradle
问题
IntelliJ IDEA为什么要创建和/或重新创建我不想要的目录?我如何才能停止此操作?取消选中设置(首选项)|构建、执行、部署|构建工具| Gradle中的自动创建空内容根目录选项
在每个IDE上启用此选项后,将根据build.gradle文件自动创建目录结构。取消选中设置(首选项)|构建、执行、部署|构建工具| gradle中的自动为空内容根创建目录选项
在每个IDE上启用此选项后,都会根据build.gradle文件自动创建目录结构。即使在@Andrey的答案中的选项被禁用时不应出现此行为,您可以尝试通过从根项目的Gradle中删除语言插件来阻止IntelliJ创建目录,因为您无论如何都不想将其用于源代码 当您在IntelliJ中创建新的Gradle项目或模块并选择一种语言作为附加框架(例如Java或Kotlin)时,相应的Gradle插件将自动添加到构建脚本中,
build.Gradle
文件将包含以下内容:
apply plugin: 'java'
// OR
apply plugin: 'kotlin'
但是,您不需要将这些插件应用于没有任何源代码的Gradle项目。如果以后添加模块(子项目),只需为此模块指定其他语言框架
关于您想要的项目结构:请注意,您违反了约定,这是可能的,但如果您真的想这样做,请重新考虑。虽然在Gradle中添加和扩展源集非常简单,但删除预定义的源集可能更难实现(请尝试SourceSetContainer
的基础集合的removeIf
方法)
最后但并非最不重要的一点,你应该考虑不关心空目录。通过IDE隐藏它们非常简单,如果它们保持为空,Git不会将它们添加到版本控制中。不要过度设计你的Gradle build,因为它几乎没有任何附加价值
Edit:我刚刚想起,您可以应用javabase
插件而不是java
插件来创建源集容器,而无需添加默认源集。但是,我不确定是否存在用于Kotlin开发的类似基本插件。即使在@Andrey的答案中的选项被禁用时不应出现这种行为,您也可以尝试通过从根项目的Gradle中删除语言插件来阻止IntelliJ创建目录,因为你无论如何都不想用它作为来源
当您在IntelliJ中创建新的Gradle项目或模块并选择一种语言作为附加框架(例如Java或Kotlin)时,相应的Gradle插件将自动添加到构建脚本中,build.Gradle
文件将包含以下内容:
apply plugin: 'java'
// OR
apply plugin: 'kotlin'
但是,您不需要将这些插件应用于没有任何源代码的Gradle项目。如果以后添加模块(子项目),只需为此模块指定其他语言框架
关于您想要的项目结构:请注意,您违反了约定,这是可能的,但如果您真的想这样做,请重新考虑。虽然在Gradle中添加和扩展源集非常简单,但删除预定义的源集可能更难实现(请尝试的基础集合的removeIf
方法)