加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在SBT中的项目和构建定义项目之间共享代码

发布时间:2020-12-16 18:41:18 所属栏目:安全 来源:网络整理
导读:如果我在SBT中的构建定义项目(在/ project / src / main / scala中)中编写了一些源代码.现在我想在我正在构建的项目中使用这些类.有最好的做法吗?目前我已经创建了一个自定义任务,可以复制.scala文件. 解决方法 你可以做以下工作吗?将有问题的类的源代码放
如果我在SBT中的构建定义项目(在/ project / src / main / scala中)中编写了一些源代码.现在我想在我正在构建的项目中使用这些类.有最好的做法吗?目前我已经创建了一个自定义任务,可以复制.scala文件.

解决方法

你可以做以下工作吗?将有问题的类的源代码放在项目的一部分中,而不是构建定义的一部分; “使用Kryo序列化 Scala对象图并将它们作为文件写入项目的类路径的任务”部分听起来像是resourceGenerators的完美工作(参见 http://www.scala-sbt.org/0.13.2/docs/Howto/generatefiles.html).然后唯一剩下的问题是如何从资源生成器引用已编译的类.我不熟悉Kryo.为了使用它,你需要在编译生成器时在类路径上编译编译的类,还是只需要在运行时的类路径上?如果后者足够,那就更容易了.您可以从Test key中的testLoader获取一个类加载器,加载该类并通过反射实例化一些对象,然后调用Kryo.

如果您在编译资源生成器时确实需要编译的类在类路径上,那么您有一个鸡和蛋的问题,在编译项目之前无法编译构建,但当然项目不能在编译构建定义之前编译.在那种情况下,在我看来除了以外你别无选择:

1)您已经在做的解决方法(在这种情况下,“最佳实践”将包括使用sourceGenerators将源从您的构建定义复制到target / src_managed)

2)将有问题的类放在一个单独的项目中,并从构建和项目中依赖它.这是整体上最干净的解决方案,但您可能会认为它太重量级了.

希望这可以帮助.也有兴趣看到别人对此的看法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读