【发布时间】:2017-02-27 15:09:40
【问题描述】:
我一直在从事一个完全由 Java 组成的 Maven 项目,最近开始将 Scala 代码混入其中。
我对 Scala 提供的出色表现力、scala-maven-plugin 的易用性以及 Java 和 Scala 之间令人难以置信的互操作性感到惊讶。
但是,我遇到了一个不便;根据 Maven 的约定,Java 的源代码进入 src/main/java,而 Scala 的源代码进入 src/main/scala。我发现这很麻烦,因为我必须经常来回切换 Java 和 Scala 源文件,并且每次我必须遍历包目录的深层层次结构(我经常关闭选项卡以防止我的编辑器混乱)。
所以问题是:是否建议维护单独的目录src/main/java 和src/main/scala?如果有,为什么?
为了添加更多背景知识,我一直在研究 Web 应用程序框架 Wicket,其约定是将 HTML 文件与其对应的 Java 文件放在一起。如果我们将目录分开,那么 HTML 文件自然也会分开(我认为将 Scala 文件和相应的 HTML 文件放在不同的目录中没有意义)。然后是“为什么我找不到 Foo.html?哦,我在寻找错误的目录。”
源文件本身很容易被人类和机器通过检查其扩展名来区分。我将 pom.xml 配置为在 src/main/java 中同时处理 Java 和 Scala,并且它可以工作(编译并运行)。另一方面,分离目录会带来在 Java 和 Scala 中定义冲突类的风险,这是一个粗心的错误。
好吧,我不想将目录命名为java,如果它不仅包含Java 还包含Scala。但这是我唯一能想到的分离目录的方法。
(编辑:我想出了一个解决方法解释;让我们认为 java 代表 Java 虚拟机。这样,如果我们决定使用 src/main/c 并不矛盾使用 JNI,因为 C 不能在 JVM 上运行。)
哦,还有一点;我的项目不打算作为开源项目;开发便利比努力遵循惯例更受欢迎。
这个问题的灵感来自this answer。
【问题讨论】:
-
我使用 IDE,文件的布局方式并不重要。我可以使用 ctrl+click 任何类来打开它。也许是时候从使用编辑器切换到使用 Java/Scala 的工具设计了。 IDE 还可以为您做很多事情。您不会相信在使用 IDE 之前浪费了多少时间。
-
我知道 IDE。我使用 Eclipse 超过 5 年,并切换到基于终端的环境 (vim)。我正在使用 eclim,所以从技术上讲,我仍在使用 Eclipse,但未能将其配置为与 Java/Scala 混合项目一起使用。恐怕我不想回到那个面向鼠标的环境。而且我受够了配置“另一个操作系统”只是为了使用文件管理器/跳线/导入组织器等……如果它不是 E 而是 T 就好了;我喜欢在编写代码时亲手使用工具来研究幕后发生的事情。
-
我在很多不同的机器上使用 IntelliJ,但我发现我不需要重新配置任何东西(也许我很乐意接受默认设置)你可以为每个功能使用热键,但我没有'不觉得我用鼠标那么多。