自作ライブラリーで sbt dist すると Not a valid command と言わる
Play Framework のプロジェクトで機能を外部ライブラリーとして切り出したいが、jarの生成でつまずいて死んだ話。
環境
- sbt 1.2.1
- scala 2.12.7
何が起きたか
このブログを流し読みして、 sbt publish-local
とか sbt package-dist
とかのコマンドがあることがわかったので、Play Framework でも使用している sbt dist
も含めてどんな違いがあるのか比較・検討しようとしていました
新規プロジェクトを作成後、まずは慣れ親しんだ sbt dist
を実行してみることに
sbt:hello> dist [error] Not a valid command: dist (similar: set, iflast, last) [error] Not a valid project ID: dist [error] Expected ':' [error] Not a valid key: dist (similar: bgList, test, history) [error] dist [error] ^ sbt:hello>
( ゚д゚)…?
...ブログでも紹介されているこっちはどうだ?
sbt:hello> package-dist [error] Not a valid command: package-dist [error] Not a valid project ID: package-dist [error] Expected ':' [error] Not a valid key: package-dist (similar: package, packagedArtifact, packageBin) [error] package-dist [error] ^
は?
Playでも使っているコマンドが動かないなんて...
解決
困ったときのStackoverflowですよ
there is no dist task in bare-bone SBT. So it just tells you it can't find such a task. Probably you meant to use some SBT plugin which defines the dist task? There is a publish task in the SBT, probably you are looking for it. – Alexander Arendar Dec 13 '17 at 16:45
distなんてタスク、生のSBTプロジェクトには存在しねえよ。publish タスク使え。ってことみたいです
余談ですが、最初に参考にしたブログでも、ちゃんと読んだらpackage-distタスクの設定をきちんとしていました