我的build.sbt中的项目有这样的配置:
name := "test-utils_0.1"
organization := "com.my.test.project"
version := "0.6.0-SNAPSHOT"
我的问题是 - 当我运行sbt clean publish-local
命令时,jar会在.ivy2本地目录中发布为:
test-utils_0-1_2.11
将其更改为test-utils_0.1_2.11
的最佳方式是什么?
更新 我还试图以这种方式修改build.sbt的artifactName属性:
name := "test-utils"
organization := "com.my.test.project"
version := "0.6.0-SNAPSHOT"
utilsVersion := "0.1"
artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
artifact.name + "_" + utilsVersion + "_" + sv.binary + "-" + module.revision + "." + artifact.extension
}
我得到名为test-utils_0.1_2.11.jar
的jar,但这不会更改我的仓库中的发布名称(它仍然使用name
属性发布,即。test-utils_2.11/0.6.0-SNAPSHOT/test-utils_2.11.jar
)< / p>
答案 0 :(得分:0)
将.
替换为_
中的artifact.name
with artifact.name.replace(“。”,“_”):
artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
artifact.name.replace(".", "_") + "_" + utilsVersion + "_" + sv.binary + "-" + module.revision + "." + artifact.extension
}
如果您想自定义路径的其他部分,请使用以下内容:
def customStyleBasePattern = "[organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]/[artifact]-[revision](-[classifier]).[ext]"
val ivyLocal = Resolver.file("local", file(Path.userHome.absolutePath + "/.ivy2/local2"))(Patterns(Nil, customStyleBasePattern :: Nil, true))
externalResolvers += ivyLocal
答案 1 :(得分:0)
您需要更改工件名称(SBT 1.2.8):
lazy val utilsVersion = "0.1"
artifact in (Compile, packageBin) := {
val old = artifact.in(Compile, packageBin).value
old.withName(old.name + "_" + utilsVersion)
}
它将产生您所需要的:
[info] published test-utils_0.1_2.12 to /home/pkhamutou/.ivy2/local/com.my.test.project/test-utils_2.12/0.6.0-SNAPSHOT/jars/test-utils_0.1_2.12.jar
您可以为packageDoc
和packageSrc
重复相同的操作。