我一直致力于一个完全由 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,还包含 Scala,我不想将它命名为 java
。但这是我唯一能想到的分隔目录的要点。
(编辑:我想出了一个解决方法——解释;让我们认为 java
代表 Java 虚拟机。这样,有 src/main/如果我们决定使用 JNI,c
并不矛盾,因为 C 不在 JVM 上运行。)
哦,还有一点;我的项目不是开源项目;开发便利胜过刻意遵守约定。
这个问题的灵感来自 this answer .
最佳答案
我会说是的,尽可能多地重复使用代码。也许将来您可以在其他地方使用这个 Java 片段...
您可能知道,您可以在 Scala 项目中使用 Java,但不能在 Java 项目中使用 Scala。因此,在这个特定示例中,它将帮助您处理( future ?)Java 项目。如果您想重用一段 Java 代码,您可以在 Java 项目和 Scala 项目中这样做。
所以我.m.h.o.它不会停在 src/main/... 但你真的应该把它们放在不同的组件中。
顺便说一下:如果我是对的,Wicket 也允许您将 html 放在其他地方,即使是在不同的项目中......我看到它(只)一次很方便,我们必须创建不同的地方我们不同客户的前端。 Java 代码保持不变,wicket-id 也一样,但是 html 到处都变了。尽管使用 Qwicky 插件确实给我们带来了一些问题,因为它无法再在我们的 IDE 中找到 html 文件。
关于java - 是否建议为 Maven 项目分离 Scala 和 Java 源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40106622/