是否建议为Maven项目分离Scala和Java源文件?

我一直在研究一个完全由Java组成的Maven项目,最近开始将Scala代码混合到其中。

我很惊讶Scala提供的出色表现力,scala-maven-plugin的易用性,特别是Java和Scala之间令人难以置信的互操作性。

但是,我遇到了一个不便; 根据Maven的惯例,Java的源代码进入src/main/java ,而Scala进入src/main/scala 。 我发现它非常麻烦,因为我必须经常来回浏览Java和Scala源文件,每次我必须遍历包目录的深层次结构(我经常关闭选项卡以防止编辑器混乱)。

所以问题是 :是否建议维护单独的目录src/main/javasrc/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虚拟机 。这样,如果我们决定使用JNI,那么让src/main/c不矛盾,因为C没有在JVM上运行。)

哦,还有一点; 我的项目不是一个开源项目; 开发便利性比努力遵守惯例更受欢迎。

这个问题的灵感来自于这个答案 。

我会说是的,尽可能多地重用代码。 也许将来你可以在其他地方使用这个Java作品……

您可能知道,您可以在Scala项目中使用Java,但在Java项目中不使用Scala。 所以在这个具体的例子中,它将帮助你(未来?)Java项目。 如果要重用一段Java代码,可以在Java项目和Scala项目中执行此操作。

所以它不会停留在src / main / …但是你应该把它们放在不同的组件中。


顺便说一下,小方注意:如果我是正确的,Wicket允许你将html放在其他地方,即使是在另一个项目中…我看到它只是方便(只)一次,我们不得不为不同的前端创建不同的前端我们的客户。 java代码保持不变,wicket-id也是如此,但html到处都有变化。 虽然使用Qwicky插件确实给我们带来了一些问题,因为它再也找不到我们IDE中的html文件了。