Visual Studio CodeでMavenを実行するためのタスク定義

Visual Studio Codeを触っているのですが、タスクの設定をしておくと任意のコマンドを実行して、さらにその出力から警告やエラーを抽出できるようです。デフォルトではtscやgrunt、gulp等の設定がサポートされているようですが、試しにMaven用の設定を作ってみました。

プロジェクト内に以下の内容で.vscode/tasks.jsonを作っておきます。

{
  "version": "0.1.0",
  "command": "mvn",
  "isShellCommand": true,
  "tasks": [
    {
      "taskName": "compile",
      "args": ["compile"],
      "isBuildCommand": true,
      "problemMatcher": {
        "owner": "java",
        "fileLocation": ["absolute"],
        "pattern": {
          "regexp": "^\\[(WARNING|ERROR)\\] (.+):\\[(\\d+),(\\d+)\\] (.+)$",
          "file": 2,
          "line": 3,
          "column": 4,
          "severity": 1,
          "message": 5
        }
      }
    },
    {
      "taskName": "test",
      "args": ["test"],
      "isTestCommand": true,
      "isWatching": false,
      "problemMatcher": {
        "owner": "java",
        "fileLocation": ["absolute"],
        "pattern": {
          "regexp": "^\\[(WARNING|ERROR)\\] (.+):\\[(\\d+),(\\d+)\\] (.+)$",
          "file": 2,
          "line": 3,
          "column": 4,
          "severity": 1,
          "message": 5
        }
      }
    }
  ]
}

するとコンパイルとテストを以下のショートカットで実行できるようになります。

  • CTRL+SHIFT+B(Macの場合はCOMMAND+SHIFT+B):コンパイル
  • CTRL+SHIFT+T(Macの場合はCOMMAND+SHIFT+T):テスト

エラーや警告があった場合はステータスバーに表示され、クリックすると一覧からソースコードの該当の箇所にジャンプすることができます。

f:id:takezoe:20151122034557p:plain

タスクの定義では様々な変数が利用でき、柔軟な設定が可能です。詳細についてはVS Codeのドキュメントや、タスクを未設定の状態で実行するとVS Codeがサンプルとして生成するtasks.jsonを参照してください。