SBT:编译和打包 - "工作树不干净"

bcr*_*bcr 7 scala intellij-idea sbt netlogo

我正在为NetLogo(repo)开发Scala扩展.我正在关注Extension API 示例和NetLogos Sample-Scala-Extension.

我看到了:

[info] Done packaging.
To compare two paths outside a working tree:
usage: git diff [--no-index] <path> <path>
[warn] working tree not clean when packaging; target not created
[success] Total time: 6 s, completed Jan 29, 2019, 6:22:00 PM
Run Code Online (Sandbox Code Playgroud)

生成的.jar不包含我对扩展名所做的修改.我认为它与"[警告]工作树不干净......"有关.

是这样的吗?解决办法是什么?

文件层次:

Scala-Plume-Model
  build.sbt
  src 
    PlumeModelExtension.scala       
Run Code Online (Sandbox Code Playgroud)


build.sbt

enablePlugins(org.nlogo.build.NetLogoExtension)

name := "plume-scala"
version := "0.1"
scalaVersion := "2.12.0"

netLogoExtName      := "plume-scala"
netLogoClassManager := "PlumeModelExtension"
netLogoZipSources   := false

scalaSource in Compile := baseDirectory.value / "src"
scalacOptions ++= Seq("-deprecation", "-unchecked", "-Xfatal-warnings", "-encoding", "us-ascii")
netLogoVersion := "6.0.4"
Run Code Online (Sandbox Code Playgroud)

Jas*_*per 7

简短的回答:添加isSnapshot := true到你的build.sbt然后packagesbt任务应该开始创建输出jar和zip文件,无论git的当前状态如何.

更长的答案:NetLogo Extension SBT插件对包装何时发生有一些期望.如果isSnapshotfalse或未设置,则插件假定您正在尝试执行"生产"版本.但是对于生产版本,您可能不希望编译和打包一个脏的存储库.因此它会警告您并且不会创建工件.

正常的工作流程isSnapshot := true是在开发过程中保留,然后在完成所有提交并准备好发布后,添加提交设置isSnapshot := false(可能还有扩展的版本缓冲),打包并标记发布,然后立即添加提交设置isSnapshot := true.

  • 您也可以在您的版本号中添加"-SNAPSHOT",而不是设置`isSnapshot`,例如:`version:="1.0.0-SNAPSHOT"`. (2认同)