我可以在Maven中用java和Scala混合代码编译一个Scala项目吗



我有一个项目,它同时包含scala和java代码,我目前正在eclipse中使用scala IDE插件管理这些代码。目前,目录结构的组织方式使得一些包中同时包含java和scala代码。有一些scala类依赖于java类,还有一些其他java类依赖于scala类。插件透明地处理所有这些——我相信(但我不能100%确定)scala编译器将java和scala代码编译在一起,这就是处理交叉依赖关系的方式。我确实找到了一些使用Maven编译混合项目的参考资料,例如这里,但我看到的那些是关于将java和scala分离为两个独立的源树的参考资料。Maven尝试首先编译scala代码,但由于依赖于java代码而失败。同样,如果首先编译java代码,它也会失败,因为依赖关系是双向的。有没有办法让Maven像eclipse插件一样将所有代码编译在一起?如果可能的话,我还希望能够生成一个eclipse项目,而不需要在之后做太多手动修复。

通常的Maven目录结构是

src/
  main/
    java/
      com/foo/mypackage/
    scala/
      com/foo/mypackage/

如果你这样设置,那么你的Java和Scala代码之间肯定会有交叉依赖关系。请参阅主题中的maven-scala-plugin或scala-maven-plugin页面。

我不建议将Java和Scala代码放在同一目录中。

最新更新