uber jar 에 대한 간단한 설명 : stackoverflow.com/a/11947093
maven 설치하는 방법 : eyeballs.tistory.com/4
maven 은 pom.xml 을 기반으로 dependencies lib 들을 다운받고 빌드하여 jar로 만들어준다.
만약 아래와 같은 pom.xml 이 있다고 하자.
maven pom.xml 에 대한 자세한 설명은 여기서 하지 않는다.
다만 uber jar 를 만들기 위해 어떤 부분에 어떤 코드를 넣어야 하는지를 설명한다.
<?xml version="1.0" encoding="UTF-8"?> <project 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> <dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.11.8</version> </dependency> <dependency> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-xml_2.11</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.7</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.4.7</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> |
uber jar 를 만들기 위해
plugin 에 아래와 같은 코드를 넣는다.
<?xml version="1.0" encoding="UTF-8"?> <project 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> <dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.11.8</version> </dependency> <dependency> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-xml_2.11</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.7</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.4.7</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <configuration> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> |
이후, maven package 명령어를 통해 build 를 시작하면,
target dir 가 생성되고, 내부에 jar 파일이 만들어지게 된다.
위에서는 shade 를 사용했는데,
assembly 를 사용하여 uber jar 를 만들수 도 있다.
위에 코드에서 bold 한 부분만 아래 코드로 교체해준다.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> |
shade 랑 assembly 랑 어떻게 다른지는 여기서 설명하지 않는다.
'눈가락' 카테고리의 다른 글
[Java] jar 내부 리스트 방법 (0) | 2021.04.05 |
---|---|
[Regex] 정규표현식을 그림으로 나타내 주는 곳 링크 (0) | 2021.03.31 |
[Fluentd] Docker fluentd 로 kafka 연동하는 방법 (0) | 2021.03.16 |
[Git] 부분 commit 들만 merge 하고 싶을 때 방법들 (0) | 2021.03.16 |
[Ansible] Udemy 처음부터 설치하며 배우는 앤서블 공부 필기 (0) | 2021.03.03 |