2016年1月11日 星期一

使用 Maven 打包 jar,並將引用的 dependencies 一併打包

在匯出 jar 時,如果是用在 Spark 或 Storm 這類平台
就沒有簡短的途徑,一定要把 jar 引用到的所有第三方函式庫,一併全打包進 jar 裡
在 Maven 中可以透過設定幾個 build 參數來達成。

首先先在 pom.xml 裡寫上需要的參數如下:
<project>
   <build>
      <plugins>
         <!-- any other plugins -->
         <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
               <execution>
                  <phase>package</phase>
                  <goals>
                     <goal>single</goal>
                  </goals>
               </execution>
            </executions>
            <configuration>
               <descriptorRefs>
                  <descriptorRef>jar-with-dependencies</descriptorRef>
               </descriptorRefs>
               <archive>
                  <manifest>
                     <!-- Indicate where is project main() function / the code entry. -->
                     <mainClass>org.example.App</mainClass>
                  </manifest>
               </archive>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>
其中 22 行的 org.example.App 是 jar 的進入點。

最後再使用 Maven 的 console 執行以下的指令,就可以打包完成了。
mvn package
打包出來的檔案,會被放在 /target 資料夾裡。

沒有留言: