Exec Maven Plugin で maven コマンドでアプリを起動する

公開日: : 最終更新日:2015/09/09 Java, Maven

packaging タグに “jar” を指定した Maven プロジェクトをコマンドラインから起動する場合、maven-shade-plugin もしくは maven-assembly-plugin を使わないと参照している外部のライブラリが JAR にパッケージされない。

それだけでもやや面倒な上にmvn package でのパッケージ作成は少々時間がかかる。
何かいい方法はないものかと検索すると、パッケージせずに Maven アプリが起動できる Exec Maven Plugin を見つけた。

以下はプラグインの導入メモ。

目次

1. Exec Maven Plugin を使ったアプリの起動手順

繰り返しになるが、これまでは以下の手順でアプリを起動していた。

  1. maven-shade-plugin もしくは maven-assembly-plugin のどちらかを pom.xml に定義
  2. mvn package コマンドを実行してアプリをパッケージ化(JAR が target ディレクトリに作成される)
  3. java -jar コマンドのパラメータに JAR を指定して実行

Exec Maven Plugin を使うと mvn コマンドから直接アプリを起動できるようになるのでパッケージにしなくてよい。

手順は以下の通りになる。

  1. exec-maven-plugin を pom.xml に定義
  2. mvn compile && mvn exec:java を実行してアプリを起動

Exec Maven Plugin を使うにしても pom.xml に plugin タグを追加するのは同じ。

導入メリットはアプリ起動までの時間が短縮されること。
パッケージする時間から解放されるため、待たされないのが個人的に大きい。

2. 適用例

ということで、pom.xml に書く plugin タグは以下の通り。

<properties>
  <mainclass.name>net.tomoyamkung.sample.SimpleJsonResource</mainclass.name>
</properties>

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.4.0</version>
      <executions>
        <execution>
          <goals>
            <goal>java</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <mainClass>${mainclass.name}</mainClass>
      </configuration>
    </plugin>
  </plugins>
</build>

mainClass タグに main() メソッドを持っているクラス名を定義する。
mainClass タグに直接書いても良いのだが、他にも参照する場合は上記のように propertites タグに切り出したほうが、1箇所で管理できるのでお勧め。

3. 更新履歴

  • 2015/09/09: 初版作成

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

no image

Jetty でシンプルなプロジェクトを作成してみた

プロトタイプを作成するなら Tomcat よりも Jetty のほうがさらっと出来そうだなぁ、と今さ

記事を読む

no image

画像ファイルのサイズ(縦横じゃなくて容量)を取得するスニペット

File#length で取得できるとは知らなかった。Gist にも登録済み。 /** * 画

記事を読む

medium_182531101

ClassLoader を使って getResourceAsStream で取得したファイルを UTF-8 で読み込む

よく使う割には覚えられず毎回調べている気がするので備忘録としてメモしておきます。 文字コードを指定し

記事を読む

icatch-maven

spring framework を使ったデスクトップアプリ(standalone app)で maven-jar-plugin を使って作成した JAR を java コマンドで実行する

spring framework を使ったデスクトップアプリ(standalone app)で co

記事を読む

icatch-zip_524574337_mini-thumbnail

Java でファイルが1つだけ圧縮された zip を解凍するサンプル

ファイルが1つだけ圧縮された zip を解凍するサンプルです。 単一ファイルが圧縮された zip

記事を読む

no image

プロセスの起動を確認するプログラム

プロセスが起動しているかを確認するプログラムを Java で書いてみました。Excel のプロセス確

記事を読む

no image

ファイルに関するユーティリティ

ファイルに関するスニペットをいくつか書いた。いつかコピペする日が来ると思うのでメモしておく。 作成

記事を読む

no image

画像ファイルを選別するFilenameFilter

画像ファイルのみアップロードを許可する仕様があって、何てことはないがフィルターを作って対応したのでメ

記事を読む

icatch_2185253176-resized

Java8 の Optional 型を返す Generics を使ったメソッドを定義する

Java8 の Optional とガード節 に続いて Java8 の Optional ネタ。今回

記事を読む

no image

サーブレットでクラスパス上にあるプロパティファイルを参照するスニペット

よく使うわりにはいつも調べているのでいい加減メモすることにした。 "app.proper

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


三 + = 5

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑