1

我正在 Scala 中启动一个新项目,该项目严重依赖于另一个 Java 项目中的源文件。起初我想在那个项目中创建一个新的包/模块,但这似乎很乱。但是,我不想在我的新项目中复制 Java 代码。我想出的最佳解决方案是通过 svn 外部依赖引用 Java 项目。另一种解决方案是从原始文件创建一个 jar 文件,我会将其作为库附加到新的 Scala 项目中。但是,这使得保持最新状态更加不便。哪条路线比较好?

SVN 外部:

  • 易于更新
  • 易于提交
  • 设置不方便

jar 文件作为库:

  • 易于设置
  • 旧代码不在积极开发中(稳定,仅修复错误)
  • 多步更新
  • 需要打开旧项目进行更改
4

3 回答 3

2

你有你的 Scala 项目,它依赖于你的 Java 项目的一部分。对我来说,这听起来像是 Java 项目应该是一个库,带有一个版本号,您的 Scala 项目只是引用它。或者也许那些在两个项目之间共享的部分应该被分离到一个库中。使用 Maven 等构建工具将清楚地知道正在使用哪个版本。然后 Java 项目可以单独发展,或者如果它需要为了 Scala 项目而改变,如果你害怕损坏,你可以推出一个新版本并在其他上下文中继续使用旧版本。

我能想到的超越二进制依赖关系的唯一例外是,Java 代码本身是否实际上在编译时以某种方式在特定于 Scala 项目的情况下进行处理。比如说,注释处理。

使用 SVN 外部可能是一个解决方案。只需确保您使用分支和快照,以确保对主干上的 Java 代码进行一些更新不会突然使您的 Scala 项目无法运行。

于 2013-01-23T17:05:00.003 回答
2

您是否混合了 scala/java 无关紧要。如果两个项目非常不同并且具有不同的发布周期,您可能想要使用外部依赖项(jar)。否则,您可以使用 sbt 并让您的两个项目成为同一构建的子项目(您的 sbt 构建文件将使 scala 项目依赖于 java 项目)。甚至,如果它们真的如此交织在一起,那么只需一个项目同时包含 java 和 scala 源文件。Sbt 处理得很好。

Maven 也是一种选择。

于 2013-01-23T17:13:55.170 回答
0

您可以使用 maven 轻松设置混合 scala/Java 项目。看看 scala-maven-plugin。

https://github.com/davidB/scala-maven-plugin

由于 maven 集成不佳,Eclipse 用户可能不太高兴。

于 2013-01-23T18:15:38.693 回答