HOME > etc > tips

Maven으로 Java프로젝트 build하는 방법 (리눅스)

By JS | 06 Oct 2019

오픈소스를 공부하던 중에 샘플앱을 maven으로 빌드해야 했습니다. maven을 사용해보지 않아서 좀 찾아봤는데요. 제가 알아본 내용을 간단히 정리해보았습니다.

Java 샘플 앱을 만들고, 빌드하고, 실행해보는 순서로 설명하겠습니다.

프로젝트 생성

폴더를 만들고, 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에서 가장 중요한 것은 아래 코드입니다. 자바코드가 처음 실행될 때 main이 실행되는 것은 모두 아실텐데요. mainClass는 main이 위치한 클래스를 알려주는 것입니다. 이렇게 해야 jar를 실행할 때 main이 실행될 수 있습니다.

<mainClass>hello.HelloWorld</mainClass>

지금까지 모두 완료하였다면, 프로젝트는 다음과 같은 구조가 됩니다.

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

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

빌드

pom.xml 파일이 있는 위치에서 mvn package 명령어를 입력하시면 빌드가 되고 산출물은 동일 폴더에 생성됩니다.

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

빌드가 완료되면 target이라는 폴더에 빌드 산출물이 생성됩니다.

실행

jar파일을 실행해보면 다음과 같이 Hello world!를 출력합니다.

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

참고