Scala 发布repo

Publish到本地

发布

我们将自己定义的repository,发布到本地某一个目录,需要在build.sbt文件里加上一句:

1
2
3
4
5
6
7
8
9
10
val spinalVersion = "1.6.0"

//加上这一句
publishTo := Some(Resolver.file("MyRepo", file("/mnt/d/lzp/riscv/tmp/package")))

lazy val root = (project in file(".")).
settings(
inThisBuild(List(
organization := "com.github.spinalhdl",
...

随后在sbt shell里运行 publish 即可将自己的package命名为MyRepo,发布的jar文件保存在/mnt/d/lzp/riscv/tmp/package下面。

使用

要使用自己先前发布的本地package,需要在调用改package的project的build.sbt里面加上一句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
scalaVersion := "2.12.13"
val spinalVersion = "1.6.0"
val vexRiscVersion = "2.0.0"

//加上这一句,分别对应Windows和WSL
resolvers += "MyRepo" at "file:///D:/lzp/riscv/tmp/package"
//resolvers += "MyRepo" at "file:///mnt/d/lzp/riscv/tmp/package"

libraryDependencies ++= Seq(
"com.github.spinalhdl" %% "spinalhdl-core" % spinalVersion,
"com.github.spinalhdl" %% "spinalhdl-lib" % spinalVersion,
compilerPlugin("com.github.spinalhdl" %% "spinalhdl-idsl-plugin" % spinalVersion),
//这里是刚刚发布的package,会从上面的resolver那里找。
"com.github.spinalhdl" %% "vexriscv" % vexRiscVersion
)

reload之后,即可使用自己发布package。

发布后的包结构

发布后的package会放在resolver添加的Repo对应的目录下。下面通常会有三级目录:

1
<organization>/<repo_name>_<scala_version>/<repo_version>

第三级目录下就是对应package的各种jar。

如果组织名本身就是分层的,比如 com.github.spinal 那么对应的也有可能分为多级目录。