【发布时间】:2017-03-08 01:24:43
【问题描述】:
我有一个IntelliJ IDEA (Community Edition 2016.2) project,它是通过导入一个在其根目录中定义了build.gradle 和settings.gradle 的文件系统项目创建的。当我在 IDEA 中打开它时,一切正常。
在 GitHub 上可以看到,目前基本的项目目录结构是:
intellij-scala-gradle-example/
src/
main/
scala/
resources/
test/
scala/
resources/
build.gradle
settings.gradle
我现在想把这个项目转换成 3 个更小的子项目,这样项目目录结构 something 就像:
intellij-scala-gradle-example/
client/
src/
main/
scala/
resources/
test/
scala/
resources/
shared/
src/
main/
scala/
resources/
test/
scala/
resources/
server/
src/
main/
scala/
resources/
test/
scala/
resources/
build.gradle
settings.gradle
我可以处理在命令行上运行所有 mkdirs 并在物理上重组文件系统上的目录,但我不确定:
- 我需要做什么才能让 Gradle 了解我现在拥有这 3 个
client/、shared/和server/子项目;和 - 我不确定我需要做什么才能让 IDEA 获取所有这些更改并正确编译内容
显然,“共享”项目中的任何类(shared/src/main/scala)或资源(shared/src/main/resources)都应该对client/ 和server/ 可见。但是客户端永远不能“看到”服务器类/资源,反之亦然。
有什么想法(没有双关语)我如何做到这一点,以及这里的事件顺序是什么?
更新:此屏幕截图显示了添加到项目中的子项目,但 IDEA 没有将它们视为 Scala 子项目(我无法将包和 Scala 源代码添加到任何子项目中)。
【问题讨论】:
-
感谢@Vampire (+1)。所以这里的顺序可能是:(1) 关闭 IJ 中的项目,(2) 删除
.idea目录,(3) 按照我上面显示的方式重新排列项目目录结构,(4) 编辑build.gradle和 @ 987654341@ 根据 Gradle 文档,以及 (5) 将项目重新导入/打开到 IJ?听起来不错,还是我错过/误解了?再次感谢! -
你不需要关闭和删除 IJ 的东西。只需在 IJ 中移动和编辑。如果您在打开 Gradle 构建时启用了自动导入,IJ 将自动赶上。如果您没有这样做,请启用自动导入或在 Gradle 工具窗口中手动按刷新。
-
嗯,再次感谢@Vampire (+1) 但请参阅my latest changes。我按照你的建议做了,(在 IJ 内部)我删除了根目录
src/并创建了客户端/共享/服务器目录。然后我像文档建议的那样为每个人添加了一个build.gradle,然后将所有这些子项目包含在我的根/父settings.gradle中。 -
但是当我右键单击
client/src/main/scala然后单击New它不会让我创建一个新的 Scala 类,它告诉我有问题(请参阅上面的截图)。有什么想法吗?再次非常感谢!
标签: scala intellij-idea gradle