이클립스에서 Maven 프로젝트를 개발하다 보면, 단순히 컴파일된 클래스 파일만으로는 부족하고, 외부 라이브러리나 자원들을 포함한 실행 가능한 JAR 파일을 만들어야 할 때가 있습니다. 이러한 경우 Maven의 Assembly 플러그인을 사용하면 손쉽게 의존성을 포함한 JAR 파일을 생성할 수 있습니다.
Assembly 플러그인이란?
Assembly 플러그인은 Maven 프로젝트를 패키징하는 강력한 도구입니다. 단순히 컴파일된 클래스 파일뿐만 아니라, 다양한 형식의 파일(예: 설정 파일, 리소스 파일)을 포함하여 배포 가능한 아카이브(JAR, WAR, ZIP 등)를 생성할 수 있습니다. 특히, 의존성 관리에 있어서 뛰어난 기능을 제공하여, 프로젝트에서 사용하는 모든 의존성을 하나의 JAR 파일에 포함시킬 수 있도록 지원합니다.
Assembly.xml 설정
Assembly 플러그인은 assembly.xml 파일을 통해 상세한 설정을 합니다. 이 파일은 src/main/assembly 디렉토리에 위치하며, 다음과 같은 구조를 가집니다.
<assembly>
<id>my-assembly</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
</fileSets>
<dependencySets>
</dependencySets>
</assembly>
- id: 어셈블리의 고유한 ID
- formats: 생성할 아카이브 형식 (jar, war, zip 등)
- fileSets: 포함할 파일이나 디렉토리 설정
- dependencySets: 의존성 설정
예시:
<assembly>
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
<outputDirectory>/</outputDirectory>
</fi=leSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
위 예시는 컴파일된 클래스 파일을 루트 디렉토리에, 런타임 의존성은 lib 디렉토리에 포함하는 JAR 파일을 생성합니다.
pom.xml 설정
Assembly 플러그인을 사용하기 위해서는 pom.xml 파일에 다음과 같이 플러그인을 추가해야 합니다.
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/=assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
pom.xml 설정(어셈블리XML포함한 예제:참고)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<archive>
<manifest>
<mainClass>myfirst.GoogleSearch</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>myfirst.GoogleSearch</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
JAR 파일 실행
생성된 JAR 파일은 다음과 같은 명령어를 통해 실행할 수 있습니다.
java -jar target/my-project-1.0-SNAPSHOT-jar-with-dependencies.jar
이클립스에서 실행
이클립스에서 Maven Goals 창을 통해 assembly:single 목표를 실행하면 JAR 파일이 생성됩니다. 생성된 JAR 파일은 target 디렉토리에서 확인할 수 있습니다.
추가 팁
- 다양한 파일 형식: Assembly 플러그인은 JAR 파일뿐만 아니라, WAR, ZIP 등 다양한 형식의 아카이브를 생성할 수 있습니다.
- 복잡한 설정: Assembly.xml 파일을 통해 매우 복잡한 패키징 설정을 할 수 있습니다.
- 플러그인 설정: pom.xml 파일에서 플러그인 설정을 통해 다양한 옵션을 커스터마이징할 수 있습니다.
Assembly 플러그인은 Maven 프로젝트를 패키징하는 강력한 도구입니다. 의존성을 포함한 실행 가능한 JAR 파일을 생성하는 것은 물론, 다양한 형식의 아카이브를 생성하고 복잡한 패키징 설정을 할 수 있습니다. 이클립스와 함께 사용하면 더욱 편리하게 Maven 프로젝트를 관리할 수 있습니다.
'Java를 배워보자' 카테고리의 다른 글
JSON Schema: 자바 코드로 Validator 구현하기 (0) | 2024.11.19 |
---|---|
오피넷 API를 활용한 Java 예제: 자세한 가이드 및 실제 코드 구현 (1) | 2024.11.17 |
WebDriverManager를 활용한 Selenium WebDriver 자동화 환경 구축 가이드 (0) | 2024.11.16 |
[전체소스]이클립스에서 Maven으로 Selenium 자동화 프로젝트 구성 및 실행하기 (0) | 2024.11.15 |
Java Maven으로 Selenium WebDriver를 이용한 Google 검색 자동화 및 콘솔 실행 과정 상세 가이드 (0) | 2024.11.15 |