如何制作 Scala 库?
How to make a scala library?
我不是一个非常有经验的程序员而且对 Scala 很陌生。我处于必须编写一个库供其他人使用的情况。我无法访问我为之做这件事的人的回购协议,所以我不能简单地为他们写一个 class - 它需要是他们在构建自己的代码时可以包含的库类型的东西。如何实现这一目标?我应该从我的源构建一个 .jar,然后他们就能以某种方式包含它,还是除了直接向他们提供源代码之外别无他法?
如果您使用的是 SBT,则可以使用 publish
命令。请参阅文档 here.
有2个选项:
publish
发布到远程仓库
publishLocal
发布到您的文件系统。
如果您需要更复杂的发布程序,请查看 sbt-release
here。
你可以在互联网上找到很多例子,但要小心检查它们的年龄。 SBT 对这些功能做了很多改进,所以现在发布起来容易多了。
Aleksey 回答的发布方法暗示他们可以通过 Maven 或 Ivy link 到您的库(例如,他们也使用像 sbt 或 Maven 这样的构建工具)。这样做的好处是他们的构建系统可以自动处理传递依赖。这可能是最好的方法。
当然,也总是有构建 jar 的老式方法,它们将其作为手动依赖项包含在内。 sbt package
将为您提供库的普通 jar,不包括您自己的依赖项或 scala 库(如果需要,它们也必须添加各自的 jar)。
最后,使用类似 sbt-assembly 的东西,您可以构建一个 fat jar,其中也包含您的库的依赖项。缺点可能是您必须确保它们不依赖于相同类型的库,因为它们不会以这种方式自动管理。
我不是一个非常有经验的程序员而且对 Scala 很陌生。我处于必须编写一个库供其他人使用的情况。我无法访问我为之做这件事的人的回购协议,所以我不能简单地为他们写一个 class - 它需要是他们在构建自己的代码时可以包含的库类型的东西。如何实现这一目标?我应该从我的源构建一个 .jar,然后他们就能以某种方式包含它,还是除了直接向他们提供源代码之外别无他法?
如果您使用的是 SBT,则可以使用 publish
命令。请参阅文档 here.
有2个选项:
publish
发布到远程仓库publishLocal
发布到您的文件系统。
如果您需要更复杂的发布程序,请查看 sbt-release
here。
你可以在互联网上找到很多例子,但要小心检查它们的年龄。 SBT 对这些功能做了很多改进,所以现在发布起来容易多了。
Aleksey 回答的发布方法暗示他们可以通过 Maven 或 Ivy link 到您的库(例如,他们也使用像 sbt 或 Maven 这样的构建工具)。这样做的好处是他们的构建系统可以自动处理传递依赖。这可能是最好的方法。
当然,也总是有构建 jar 的老式方法,它们将其作为手动依赖项包含在内。 sbt package
将为您提供库的普通 jar,不包括您自己的依赖项或 scala 库(如果需要,它们也必须添加各自的 jar)。
最后,使用类似 sbt-assembly 的东西,您可以构建一个 fat jar,其中也包含您的库的依赖项。缺点可能是您必须确保它们不依赖于相同类型的库,因为它们不会以这种方式自动管理。