MavenでJavaプロジェクトをビルドする方法

オープンソースを勉強している間、サンプルアプリをmavenでビルドする必要がありました。 mavenを使ってみなかったので、ちょっと探してみました。私が知った内容を簡単にまとめました。

Javaサンプルアプリを作成、ビルド、実行してみる手順で説明します。

Ubuntu(Linux)開発環境に基づいて説明しました。

1. プロジェクトの作成

フォルダを作成し、 HelloWorld.javaファイルを作成します。

$ mkdir -p src/main/java/hello
$ vim src/main/java/hello/HelloWorld.java

「HelloWorld.java」には、次の内容を入力します。

package hello;

public class HelloWorld {
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        System.out.println(greeter.sayHello());
    }
}

Greeter.javaには次の内容を入力します。

$ vim src/main/java/hello/Greeter.java
package hello;

public class Greeter {
    public String sayHello() {
        return "Hello world!";
    }
}

最後に、 pom.xmlファイルを作成します。

$ vim pom.xml

pom.xmlはMavenのビルド設定ファイルです。次の内容を入力します。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-maven</artifactId>
    <packaging>jar</packaging>
    <version>0.1.0</version>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>hello.HelloWorld</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

上記の pom.xml で最も重要なのは以下のコードです。 Javaコードが最初に実行されたときにmainが実行されるのはすべて知っています。 mainClass は、main が位置するクラスを知らせるものです。これを行うと、jarを実行するとメインが実行される可能性があります。

<mainClass>hello.HelloWorld</mainClass>

これまですべて完了したら、プロジェクトは次のような構造になります。

$ tree
.
├── pom.xml
└── src
    └── main
        └── java
            └── hello
                ├── Greeter.java
                └── HelloWorld.java

2. Mavenのインストール

ビルドする前に、まずMavenがインストールされていることを確認する必要があります。 mvn -vでインストールされていることを確認してください。

dagger/examples/simple$ mvn -v
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 1.8.0_222, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-65-generic", arch: "amd64", family: "unix"

インストールできない場合は、次のコマンドでインストールする必要があります。

$ sudo apt install maven

3. ビルド

pom.xmlファイルがある場所で mvn packageコマンドを入力するとビルドされ、出力は同じフォルダに作成されます。

dagger/examples/simple$ mvn package
pom.xml  src

ビルドが完了すると、 targetというフォルダにビルド出力が生成されます。

4. 実行

jarファイルを実行すると、次のように Hello world!を出力します。

$ java -jar target/gs-maven-0.1.0.jar
Hello world!

References

codechachaCopyright ©2019 codechacha