Scala 如何使用凿子模块作为软件包

Scala 如何使用凿子模块作为软件包,scala,sbt,chisel,Scala,Sbt,Chisel,对于斯卡拉人来说,这肯定是一个显而易见的答案。但对于像我这样的新scala用户来说,情况并非如此;) 我有两个带有“标准”层次结构(和)的scala模块(包),我想在第三个项目/模块中使用它们 我的spi2wb模块的文件目录层次结构如下: ├── build.sbt ├── Makefile ├── README.md └── src ├── main │   └── scala │   └── spi2wb.scala └── test

对于斯卡拉人来说,这肯定是一个显而易见的答案。但对于像我这样的新scala用户来说,情况并非如此;)

我有两个带有“标准”层次结构(和)的scala模块(包),我想在第三个项目/模块中使用它们

我的spi2wb模块的文件目录层次结构如下:

├── build.sbt
├── Makefile
├── README.md
└── src
    ├── main
    │   └── scala
    │       └── spi2wb.scala
    └── test
        └── scala
            └── test_spi2wb.scala
在scala source中,我添加了包头:

  • 在src/main/scala/spi2wb.scala中
包spi2wb
  • 在src/main/scala/mdio.scala中
包mdio
这两个项目在我的家用电脑硬盘上。我想知道如何在我的第三个项目中以类似“导入*”的方式使用这两个模块:

导入mdio_ 导入spi2wb_
同样,这可能很简单,但我找不到一个简单的方法。我用publishLocal找到了一个解决方案

在每个模块的build.sbt中,我添加了一个版本和组织:

version := "1.0-rc2" 

organization := "org.armadeus"
然后针对每个子模块,我启动publishLocal命令:

$sbt publishLocal
在我的主要“top”模块的sbt中,我添加了依赖项:

libraryDependencies ++= Seq("org.armadeus" %% "spi2wb" % "1.1")

libraryDependencies ++= Seq("org.armadeus" %% "mdio" % "1.0-rc2")
请注意,不要忘记将双%%符号作为第一个分隔符,以使其与您的scala版本配合使用


我不知道这是否是一个好方法,但它正在发挥作用。

也许这有帮助:。我认为你还必须把你的文件放在一个与你的包名相对应的文件夹里。这真的很复杂。juste说“hey package is here”时给出目录,然后将其与导入一起使用?如果您想在其他项目中使用它,我不这么认为。发布是Scala社区中共享内容的正常方式,因此本地发布是有意义的。我们在rocket chip中有源依赖项(与发布的依赖项相反),但这有点痛苦。嗨@jkoenig,如果你有“源依赖项”,这是否意味着你只有一个包和build.sbt配置文件?