tech.chakapoko.com
Home / Java / Maven

[Java]Exec Maven PluginでMavenからJavaプログラムを実行する

使い方

Java を開発中にプログラムを実行する時には IDE から実行することが多いかと思いますが、Maven を使ってコマンドラインからプログラムを実行することもできます。

クラスパスの設定などを Maven がしてくれるので簡単に実行ができます。

例えば、 com.example.Example というクラスがエントリポイントのプログラムに、a, b, c という引数を渡して実行したい時は次のコマンドを実行します。

mvn compile
mvn exec:java -Dexec.mainClass=com.example.Example -Dexec.args='a b c'

サンプルプログラム

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>example</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>example</name>

</project>

src/main/java/com/example/Example.java

package com.example;

public class Example {

    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(arg);
        }
    }

}

サンプルプログラムの実行

mvn compile
mvn exec:java -Dexec.mainClass=com.example.Example -Dexec.args='a b c'

実行結果:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.example:example >-------------------------
[INFO] Building example 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ example ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ example ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ example ---
a
b
c
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.827 s
[INFO] Finished at: 2019-06-13T21:51:41+09:00
[INFO] ------------------------------------------------------------------------

Maven のログを抑制したい場合は -q オプションをつけます。

mvn compile
mvn -q exec:java -Dexec.mainClass=com.example.Example -Dexec.args='a b c'

実行結果:

a
b
c