Maven 애플리케이션 패키징하기

Maven 애플리케이션 패키징하기

Kotlin 애플리케이션을 Maven으로 패키징할 때는 표준 JAR 파일로 만들거나, 모든 의존성을 포함한 자체 포함(self-contained, 일명 fat) JAR 파일로 만들 수 있어요. 애플리케이션을 패키징하면 배포할 수 있고, Java Runtime Environment(JRE)가 있는 어느 머신에서든 실행할 수 있게 돼요.

출처: Package your Maven application

본문

JAR 파일 만들기

모듈의 코드만 담긴 작은 JAR 파일을 만들려면 Maven pom.xml 파일의 <build><plugins> 아래에 다음 내용을 포함해요. 여기서 main.class는 프로퍼티로 정의되며 주 Kotlin 또는 Java 클래스를 가리켜요:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.5.0</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>${main.class}</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

자체 포함 JAR 파일 만들기

모듈의 코드와 그 의존성을 모두 담은 자체 포함 JAR 파일을 만들려면 Maven pom.xml 파일의 <build><plugins> 아래에 다음 내용을 포함해요. 여기서 main.class는 프로퍼티로 정의되며 주 Kotlin 또는 Java 클래스를 가리켜요:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.8.0</version>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals> <goal>single</goal> </goals>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>${main.class}</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </execution>
    </executions>
</plugin>

이 자체 포함 JAR 파일은 JRE에 직접 전달해서 애플리케이션을 실행할 수 있어요:

java -jar target/mymodule-0.0.1-SNAPSHOT-jar-with-dependencies.jar

더 알아보기

Kotlin 컴파일러 설정(Maven), 빌드 도구 API 문서도 살펴보세요.