yamory の使い方

yamory へようこそ! yamory の基礎知識と使い方をご紹介します。

コマンドラインから sbt プロジェクトをスキャンする

このページでは、コマンドラインから sbt プロジェクトをスキャンする方法について説明いたします。

sbt プロジェクト をスキャンする場合、事前に sbt/sbt-dependency-graph プラグインをインストールする必要があります。

sbt-dependency-graph プラグインをインストールする

sbt プラグインのインストール方法は大きく分けて 2 通りあります。1 つは対象の sbt プロジェクトの project ディレクトリにプラグインを格納する方法、もう 1 つは ~/.sbt 配下にプラグインを格納する方法です。
詳細は sbt のドキュメントをご参照ください。
General Best Practices

以下はプロジェクトディレクトリ内の project ディレクトリにプラグインインストールする場合の手順です。

  1. まず <対象プロジェクトのルートディレクトリ>/project/plugins.sbt ファイルが存在しなければ作成してください。
  2. 次に 1 で作成したファイルに以下の内容を追記してください。

sbt 1.4 以上の場合

addDependencyTreePlugin

sbt 1.3 以下の場合

addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1")

sbt プロジェクトをスキャンする

sbt プロジェクトのコマンドスキャンでは前述の sbt-dependency-graph プラグインの dependencyTree タスクによって依存関係を抽出した出力テキストをスキャンします。
スキャンを行うには、コマンドライン上でスキャン対象の sbt プロジェクトのルートディレクトリに移動し、以下を実行してください。

sbt -J-Dsbt.log.noformat=true "project <sbt のプロジェクト名>" dependencyTree | PROJECT_GROUP_KEY=<yamory 上のプロジェクトグループ識別キー> YAMORY_API_KEY=xxxxxxxxxxxxxxxxx bash -c "$(curl -sSf -L https://yamory/script/...)"

上記の < > 内の箇所は、以下の内容に適宜置き換えてください。

<sbt のプロジェクト名>: sbt のスキャン対象にするサブプロジェクト名を入力します。単一プロジェクトの場合は、"project <...>" の箇所を削除してください。
サブプロジェクト名は、sbtプロジェクトのルートディレクトリに移動し、sbt projectsを実行して見つけることができます。

<yamory 上のプロジェクトグループ識別キー>:サービス名称などを設定してください(例: yamory )(半角英数記号のみ、半角スペースは入力不可)。

依存ツリー解析エラーが出た場合

sbt-dependency-graphプラグインは、標準入出力デバイスの端末幅より長い依存ツリーを省略します。 依存ツリーが省略されたため正しく解析ができなかった場合下記のエラーが発生します。次の対処方法を実施してください。

Failed to parse dependency tree. message=Dependency Tree is truncated.

依存ツリー解析エラーの対処方法

sbt-dependency-graphプラグインは、標準入出力デバイスの端末幅より長い依存ツリーを省略するため、下記のsttyコマンドにより端末幅をおきくすることでこの問題を回避できます。 依存ツリーを実際に出力して確認し、十分なcolsサイズを確保してから、sbt のコマンドスキャンをお試しください。

stty コマンド例

stty rows 64 cols 1024